2013년 2월 18일 월요일

Log4j 설정


로그4J 라이브러리 임포트 과정은 생략함니다.

로그4J가 import된 프로젝트의 Src 폴더에 아래와같은 파일을 생성함니다

log4j.properties

이제 log4j가 업무를 수행할때 해당 파일에 들어있는 환경변수들을 사용하여 출력 함니다.

log4j.properties 파일 내부데이터로 들어가겠습니다.

먼저 출력 객체의 선언 임니다.

두가지 객체 선언 방법이 있습니다.
log4j.rootLogger        
log4j.logger.

전자의 경우 rootLogger로서 해당 프로젝트내에서 발생하는 로그업무를 모두 출력 합니다.
(레벨별 제한은 물론 함니다.)

후자의 경우 logger 뒤에 '.' 가 있는데. 해당 프로젝트내의 특정 패키지를 계속 이어붙임니다.
ex) log4j.logger.baeseulki.seul 

이렇게하면 저 패키지에서 일어나는 로그업무에 대해서만 처리함니다.

객체선언의 마지막 할당 입니다.

log4j.rootLogger               =     debug, hoho, haha
log4j.logger.baeseulki.seul      =      info, seul, kikiki

오른쪽에 1번째 변수는 출력해줄 경보레벨의 제한임니다. 
info의 경우 debug.info.warn.err.fatal 에서 debug는 출력되지 않습니다.

2번째 이상부터는 객체 명임니다. 아래에서 객체명을 통해서 로그의 출력방법, 출력 형식등을 설정함니다.

즉 현재 루트로거에는 hoho와 haha방식으로 출력한다고 보면 되겠습니다.

두방법 다 사용하면
두방법다 객체에 지정한 방법대로 출력함니다. 이제 출력 객체 설정에 들어감니다.


출력 객체로의 접근방법은 다음과 같습니다.

log4j.appender.객체명.객체의 속성값 = 속성에 적용할 값

객체명은 hoho , seul, 과 같이 우리가 생성한 객체입니다.
속성값은 file 같이 정해진 특정 속성입니다.
file 속성은 출력할 파일명을 말함니다. 
ex) log4j.appender.hoho.file = c/log/hoho.log

일단 객체의 출력 방법부터 설정합시다. 출력 방법의 경우 속성값이 없습니다. 객체 자체에 넣습니다.

og4j.appender.객체명 = 출력방식

출력방식은 정해진 값들이 있습니다.
org.apache.log4j.ConsoleAppender     //콘솔창에 출력
org.apache.log4j.DailyRollingFileAppender       //파일에 출력

ex)  log4j.appender.hoho = org.apache.log4j.DailyRollingFileAppender


layout 속성은 출력한 스타일을 표현함니다. 2중으로 사용함니다.
일반적인 PatternLayout을 사용함니다.

세부적인 내용은  layout.ConversionPattern 에 추가로 설정합니다.
아래와같이 함니다.

log4j.appender.hoho.layout=org.apache.log4j.PatternLayout
log4j.appender.hoho.layout.ConversionPattern=[%d] %-5p %l - %m%n

아래 패턴에 들어가는 내용은 프로그램상에서
private static Logger logger = Logger.getLogger(seul.class); 
logger.debug("슬슬");

여기 들어간 슬슬 이라는 출력 내용을 ConversionPattern 의 형태로 변경하여 출력 함니다.
Pattern의 %? 값들의 내용은 다음과 같습니다.

%p : 호출명(ex DEBUG, INFO, WARN, ERROR, FATAL)
%n : 줄바꿈
%m : 매개변수 메세지
%t : 스레드
%F : 실행파일명
%M : 수행 메소드
%L : 라인????넘버
%d : 날짜


log4j.appender.hoho.DatePattern='.'yyyy-MM-dd
// 매일 자정에 로그파일을 교체하며 기존파일은 xx.log_2004.07.12 

log4j.appender.hoho.Threshold=DEBUG
//출력할 정보의 최소단위.


소스

log4j.rootLogger = info, stdout, dailyfile 

log4j.stdout = false
log4j.debug = false

log4j.appender.stdout = org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p ({%t} %F[%M]:%L) [%d] HIHI- %m%n

log4j.appender.dailyfile.Threshold = ERROR
log4j.appender.dailyfile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyfile.File = c:\\log\\logfile.log 
log4j.appender.dailyfile.layout = org.apache.log4j.PatternLayout
log4j.appender.dailyfile.layout.ConversionPattern=%5p ({%t} %F[%M]:%L) [%d]  - %m%n

log4j.appender.dailyfile.DatePattern ='.'yyyy-MM-dd


log4j.logger.log4j.bae=DEBUG, BAE
 
log4j.appender.BAE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.BAE.File=C:/logs/BAE.log
log4j.appender.BAE.DatePattern='.'yyyy-MM-dd
log4j.appender.BAE.Threshold=DEBUG
log4j.appender.BAE.layout=org.apache.log4j.PatternLayout
log4j.appender.BAE.layout.ConversionPattern=[%d] %-5p %l - %m%n

log4j.logger.log4j.hehe=INFO, HEHE
 
log4j.appender.HEHE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.HEHE.File=C:/logs/HEHE.log
log4j.appender.HEHE.DatePattern='.'yyyy-MM-dd
log4j.appender.HEHE.Threshold=DEBUG
log4j.appender.HEHE.layout=org.apache.log4j.PatternLayout
log4j.appender.HEHE.layout.ConversionPattern=[%d] %-5p %l - %m%n

---------------------------------------------------------
출처 - http://blog.naver.com/skykingkjs?Redirect=Log&logNo=150152227953