본문 바로가기

Programming Language/Java & Scala

log4j에서 DailyRollingFileAppender 사용시 반드시 선언 순서를 지켜야한다.

log4j는 properties파일을 통해 로깅 파일을 어떻게 활용할 것인지 선언할 수 있습니다.

 

그런데 이 파일에서 DailyRollingFileAppender를 사용할 경우 순서를 반드시 지켜야합니다. 그 순서란 아래와 같습니다.

 

log4j.appender.outAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.outAppender.DatePattern='.'yyyy-MM-dd
log4j.appender.outAppender.File=${router.logs.dir}/application.log
log4j.appender.outAppender.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.routerAppender.layout.ConversionPattern=%d %-5p [%t] %c{2}(%L) - %m%outAppender

위 log4j.properties는 치명적인 결함을 가지고 있습니다. 해당 파일을 log4j 프로퍼티로 적용하여 실행하면 당일 데이터가 application.log에 쌓이지 않고 전날 로그로 쌓입니다.

 

Example) 2020년 9월 15일에 애플리케이션 실행시

- application.log.2020-09-14 <- 로그가 쌓임

이를 해결하기 위해서는 DataPattern의 선언을 반드시 File선언보다 이후에 둬야합니다.

log4j.appender.outAppender.File=${router.logs.dir}/application.log
log4j.appender.outAppender.DatePattern='.'yyyy-MM-dd

 

반응형