본문 바로가기

프로그램/log

log4j 설정-1

반응형


일단 톰캣의 commons-logging 을 이용하여 해보려고 했다.
하지만 commons-logging 안에 들어있는 설명서를 읽어보니
이것은 log4j를 제공한다기 보다는 로깅을 위한 랩퍼 역활을 제공하는 것 같았다.

그래서 일단 이것은 보류하고 log4j를 http://www.apache.org 에서 다운로드 받았다.

버젼은 1.2, 1.3, 2.0 중 안되는 영어실력으로 봤을때 가장 안정되었다고 나온 1.2를 다운받았다.

다운 받은 폴더에서 jar를 myclass 폴더에 넣은 후 이것을 이클립스에서 추가하였다.


이것을 토대로 일단 샘플을 작성

public class LogTest {
 public static void main(String[] args) {
//  Layout layout = new SimpleLayout();
 
//  Appender appender = new ConsoleAppender(layout);
 
  Logger logger = Logger.getLogger(LogTest.class.getName());
 
//  logger.addAppender(appender);
 
  for(int i=0; i<10; i++) {
   logger.debug("LogTest - debug");
   
   logger.info("LogTest - info");
   
   logger.warn("LogTest - warn");
   
   logger.fatal("LogTest - fatal");
   
   logger.error("LogTest - error");
  }
 }
}

위의 소스에 대한 설명은 다음과 같다.

Layout - 출력되는 양식에 대하여 설정하는 부분이다.
Appennder - 로그를 출력하는 대상을 설정하는 부분
Logger - 로깅을 수행하는 당사자

위와 같이 소스를 구현할 경우 중간에 변경해야 할 경우 소스 자체를 바꾸어야 함
그러므로 이를 방지하기 위해 properties 를 사용하는것 같음

log4j.properties 파일을 루트에 설정한다.

내용은 다음과 같다.

log4j.rootLogger=DEBUG, stdout, R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%5p (%F:%L) - %m%n


log4j.appender.R.Threshold=INFO

log4j.appender.R=org.apache.log4j.RollingFileAppender

log4j.appender.R.File=sample.log

log4j.appender.R.MaxFileSize=100KB

log4j.appender.R.MaxBackupIndex=2

log4j.appender.R.layout=org.apache.log4j.PatternLayout

log4j.appender.R.layout.ConversionPattern=%5p (%F:%L) - %m%n


설명은 다음과 같다.

rootLogger는 로깅 레벨이 DEBUG로 되어 있고 어펜더는 stdout과 R이라는 이름으로 어펜더를 두개 가지고 있다.아래 stdout이라는 이름의 어펜더에는 ConsoleAppender가 있어서 시스템 출력인 것을 알 수 있으며 R에는 RollingFileAppender가 있어서 (순환)파일에 로그를 출력하게 된다. RollingAppender에는 로깅 레벨이 INFO이상인 로그 메시지만 출력하도록 하였다 MaxFileSize는 여기서는 간단히 테스트해볼 수 있는 정도의 크기로 2KB만 정하였고 실제로는 적정한 크기로 정하면된다. sample.log 파일의 크기가 2KB를 넘으면 sample.log.1로 파일이 백업되고 새로운 sample.log에 로그를 출력한다. MaxBackupIndex=2이므로 백업 파일은 sample.log.1과 sample.log.2까지만 생성된다.

R이라는 이름의 어펜더의 Threshold=INFO로 되어 있는데 어펜더에 설정한 Threshold는 로거에 설정한 로깅레벨에서 Threshold보다 레벨이 낮은 것은 걸러내서 출력하지 않도록 하는 역할을 한다. 따라서 로거에서 설정한 로깅 레벨이 Threshold보다 높다면 Threshold는 걸러낼 것이 없기 때문에 의미가 없다.

[출처] [Log4J] 간단한 소개|작성자 써니


일단은 여기까지 수행하였음

2008-03-07