Log4J
Log4J에는 로거(logger),어펜더(appendar),레이아웃(layout)이라는 세가지 주요 컴포넌트가 들어 있어, 런타임에 로그 메시지의 레벨에 따라 포맷형태와 로그가 출력되는 위치를 컨트롤한다. 즉 로거는 지정한 레이아웃대로 어펜더에 로그를 남긴다.
-
로거는 로그의 영역(category) 또는 로그의 주체이다. 애플리케이션을 작성할 때 로깅을 시작하기 전에 어떤 로거를
사용할지를 결정하여 패키지에 따라 어떤 패키지에서 발생한 로그는 파일에 출력하고자 하고 다른 패키지에서 발생하나 로그는 시스템
출력을 한다는 식으로 구분하여ㅑ 출력하는 것이 가능하게 된다
-
어펜더는 로그를 출력하는 위치이다. 로그에는 하나 이상의 어펜더를 지정할 수 있어 시스템 출력도 하면서 텍스트 파ㅣㅇㄹ에 기록할
수 도 있다. 로그 메시지는 시스템 출력, 테긋트 파일, HTML 파일, XML 파일, 소켓, Windows NT Event 로그, 이메일 등으로 출력할 수가 있다.
- 어펜더에서 로그를 출력하기 위한 출력 포맷은 레이아웃에 따른다.
- 애플리케이션 개발자가 만든 로그 메시지를 출력하는 것 이외에도 일자, 시간, 로깅레벨, 클래스명, 소스코드 라인 번호, 메소드 이름, 스레드 이름 등을 출력하는 것을 레이아웃에 지정하면 된다.
Log4J에서 사용하는 로깅 레벌은 다섯 가지이며 순서대로 쓰면 DEBUG < INFO < WARN < ERROR < FATAL 이다. 로그에 할당된 로깅 레벨에 따라 동일하거나 그보다 높은 레벨의 로그 메시지를 출력한다. 예를 들어 로거에 할당된 로깅 레벨이 WARN이라고 하면 WARN, ERROR, FATAL의 로그 메시지를 출력하는 것이다.
애플리케이션에서 각 클래스는 각각의 로거를 가지거나 공통의 로거를 가질 수 있다
Log4J는 모든 로거가 상속할 수 있는 루트 로거를 제공한다. log4j.properties를 만들 때도 맨 위에 필요한 것이 루트 로거에 대한 내용이다.
<< log4j.properties 사용 >>
애플리케이션 소스 코드에서 로거의 로깅 레벨이나 어펜더 등을 정할 수 있도록 하는 메소드가 있지만 Log4J에서는 이를
권장하지 않는다. 로깅 레벨을 바꾸고 싶다면 소스를 수정해야하는 그런 고정을 겪지 않으면서도 간단하게 로거에 따른 어ㅔㅍㄴ더오
ㅏ레이아웃을 런타임에 바꿀수 있는 방법이 log4j.properties를 이용하는 방법ㅇ다ㅣ
log4j.properties에는 맨 위 부분에 rootLogger에 대한 설정이 있다.
따라서 다음고ㅏ 같은 log4j.properties 파일을 만들어 보자
log4j.rootLogger=DEBUG, stdout, R
log4j.appender.stdout=org.apache.log4j.ConseleAppender
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=2KB
log4j.appender.R.MaxBackupIndex=2
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%5 (%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는 걸러낼 것이 없기 때문에 의미가 없다.
[:2008년 03월 14일 20:08:02 수정되었습니다.:] |