2013년 6월 24일 월요일

2013-06-24 Spring Framework Log4j Config (2) logger appender setting



log4j.rootCategory=DEBUG, stdout, dailyfile
===============================================================
#setting stdout logger
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%p] (%F) - %m%n


ConsoleAppender => 설정한 레벨의 로그가 콘솔창에 출력된다.
stdout => 어떠한 이름으로 설정해도 상관없다. 하지만 맨 윗줄 rootCategory에 정의한 이름과 동일해야한다.

===============================================================
#setting dailyfile logger
log4j.appender.dailyfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyfile.layout=org.apache.log4j.PatternLayout
log4j.appender.dailyfile.layout.ConversionPattern=[%p] (%F) - %m%n
log4j.appender.dailyfile.DatePattern='.'yyyy-MM-dd
log4j.appender.dailyfile.Treshold=DEBUG
log4j.appender.dailyfile.File=${webapp.root}/WEB-INF/logs/web03.log

DailyRollingFileAppender => 파일로 로그를 남겨준다.
dailyfile => 어떠한 이름으로 설정해도 상관없다. 하지만 맨 윗줄 rootCategory에 정의한 이름과 동일해야한다.

===============================================================
log4j.appender.dailyfile.File=${webapp.root}/WEB-INF/logs/web03.log
=> 시스템루트를 지정하지 않고 동적으로 받아와 해당 루트에 로그파일을 생성하기 위함.


What is ${webapp.root} ?????

=====web.xml=====

# ${webapp.root} is System Property.
# I have to put into system property.
#step1.add <context-param/> into web.xml
# <context-param>
#       <param-name>WebAppRootKey</param-name>
#       <param-value>webapp.root</param-value>
# </context-param>

#step2.add Log4jConfigListener or WebAppRootListener 

log4j.appender.dailyfile.File=${webapp.root}/WEB-INF/logs/web03.log

위와 같이 web.xml에 설정을 추가해준다.
webAppRootKey라는 약속된 param-name을 설정하고 webapp.root라는 이름으로 시스템프로퍼티에서 해당 어플리케이션의 경로를 받아온다.
=> web.xml에 webAppRootKey(웹애플리케이션의 루트경로를 찾을 때 사용할 키)을 webapp.root라는 닉네임으로 realPath를 저장

log4j.logger.bit.java39.dao=TRACE
DEBUG이하로는 출력이 안됨
DAO관련해서만 출력됨











댓글 2개: