1. Log4J 기능
Log4J는 5개의 레벨로 메세지를 로깅할 수 있다.
debug : 완성된 어플리케이션에서는 출력되지 않아야 하며, 개발의 편의를 위한 디버깅 메세지를 쓰기위해 사용
info : 어플리케이션의 verbose 모드에서 출력될만한 메세지를 쓰기위해 사용
warn : 어플리케이션의 경고 메세지를 쓰기위해 사용
error : 어플리케이션이 돌아가기는 하나, 에러 메세지를 쓰기위해 사용
fatal : 어플리케이션이 비정상적으로 종료될 치명적인 메세지를 쓰기위해 사용
2. Log4J 설치
1. 파일다운로드 : http://logging.apache.org/site/binindex.cgi
2. logging-log4j-1.2.14.zip 압축을 풀고 \logging-log4j-1.2.14\logging-log4j-1.2.14\dist\lib\log4j-1.2.14.jar 파일을 해당 어플리케이션의 \WEB-INF\lib\ 에 위치시킨다.
3. \logging-log4j-1.2.14\examples\log4j.properties 파일을 \WEB-INF\classes\ 에 위치시키고 수정하여 사용
3. Log4j.properties 설정
Log4j 를 설정하는 기본파일은 log4j.properties 이다.
Log4j를 설정하는 것은 Category(logger)에 Appender (목적지/대상/핸들러)를 더하고 각각의 Appender 에게 Layout(구성)을 저정하는 것이다.
하나의 Category는 하나 혹은 그 이상의 대상에 로그하도록 설정된다. 이 대상을 Appender 라고 부르며 한번의 로깅 호출로 콘솔, 텍스트파일, Html 파일, Xml 파일, 소켓등으로 로그메세지를 보낼 수 있다. 이러한 Appender 에는 ConsoleAppender, FileAppender, SMTPAppender ,SocketAppender, SyslogAppender 등이 있다.
Log4j는 날짜, 시간, 메세지 레벨, Java 클래스명, 메소드명 등의 정보를 Layout의 설정을 통해 로그 메세지에 추가할 수 있다.
4. Log4J 활용
** Layout 사용하기
%m : 메세지 출력
%p : priority 출력
%r : 어플리케이션이 시작되어 로깅이벤트가 발생하는 시점까지의 경과시간을 밀리세컨드로 출력
%c : category 출력
%n : 개행문자 출력
%d : 로깅이벤트가 일어나 날짜 출력 ( 프로그램의 실행속도를 느리게 한다.)
예) %d{HH:mm:ss} 또는 %d{dd MMMM yyyy HH:mm:ss}
%C : 호출자의 클래스명 출력
%M : 호출자의 메소드 출력
%F : 호출자의 파일 이름 출력
** Appender 사용하기
* ConsoleAppender 옵션
Threadhole=WARN : category 의 priority가 더 낮게 지정되어 있더라도 여기 명시된 priority 보다 낮은 메세지들은 로깅하지 않는다.
ImmediateFlush=true : 기본값은 true 로그메세지가 버퍼되지 않는다.
Target=System.err : 기본값은 System.out
* FileAppender 옵션
Threadhole=WARN : category 의 priority가 더 낮게 지정되어 있더라도 여기 명시된 priority 보다 낮은 메세지들은 로깅하지 않는다.
ImmediateFlush=true : 기본값은 true 로그메세지가 버퍼되지 않는다.
File=testlog.txt : 로깅할 파일명
Append=false : 기본값은 true이며, 파일끝에 추가하는 것을 의미한다.
* RollingFileAppender 옵션
Threadhole=WARN : category 의 priority가 더 낮게 지정되어 있더라도 여기 명시된 priority 보다 낮은 메세지들은 로깅하지 않는다.
ImmediateFlush=true : 기본값은 true 로그메세지가 버퍼되지 않는다.
File=testlog.txt : 로깅할 파일명
Append=false : 기본값은 true이며, 파일끝에 추가하는 것을 의미한다.
MaxFileSize=100KB : KB, MB, GB 의 단위를 사용, 지정한 크기에 도달하면 로그파일을 교체한다.
MaxBackupIndex=5 : 최대 5개의 백업 파일을 유지한다.
* DailyRollingFileAppend 옵션
Threadhole=WARN : category 의 priority가 더 낮게 지정되어 있더라도 여기 명시된 priority 보다 낮은 메세지들은 로깅하지 않는다.
ImmediateFlush=true : 기본값은 true 로그메세지가 버퍼되지 않는다.
File=testlog.txt : 로깅할 파일명
Append=false : 기본값은 true이며, 파일끝에 추가하는 것을 의미한다.
DatePattern='.'yyyy-mm : 매월 파일을 교체한다. 교체주기는 월, 주, 일, 시간, 분 별로 정할 수 있다.
-------------------------------------------------------------------------
-- * Log4j 설정파일 예제
-- 두개의 Appender를 사용하여, 하나는 콘솔에, 하나는 파일에 로깅한다.
-------------------------------------------------------------------------
# root category 의 레벨 (priority)를 DEBUG로 설정한다.
log4j.rootCategory=DEBUG, stdout, file
#log4j를 설정하는 상세 정보 출력여부 (true/false)
log4j.debug=false
#---------------------------------
# 첫번째 appender : 콘솔에 로깅
#---------------------------------
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.ImmediateFlush=true
log4j.appender.stdout.Target=System.err
# 출력 Layout 설정 : 호출하는 파일명출력
log4j.appender.stdout.layout.ConversionPattern=[%p] (%F) - %m%n
#---------------------------------
# 두번째 appender : 파일에 로깅
#---------------------------------
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.ImmediateFlush=true
log4j.appender.file.File=logs/testlog.txt
log4j.appender.file.Append=true
# 파일명 패턴
log4j.appender.file.DatePattern ='.'yyyy-MM-dd
# 출력 Layout 설정 : 호출하는 시간, 파일명등 출력
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%d{HH:mm:ss}] [%p] (%F) - %m%n
[출처] [apache]Log4J 설치 및 사용법|작성자 saturnfly
'전산Tip > Java, JSP' 카테고리의 다른 글
프레임내 타도메인 세션,쿠키 유지하기 (0) | 2008.08.18 |
---|---|
개발자가 놓치기 쉬운 자바의 기본원리 (0) | 2008.08.07 |
멱등(Idempotent) (0) | 2008.08.07 |