2011-08-12 4 views
1

내 응용 프로그램에서 Spring & Hibernate를 사용하고 있는데 두 개의 다른 로그 파일을 설정하려고합니다. 하나의 기본 로그 파일과 SQL 쿼리를 작성하기위한 다른 파일이 있습니다. 이것은 내 log4j.properties 파일입니다 ..하지만 SQL 로그 파일이 예상대로 작동하는 동안 문제는 기본 로그 파일에도 sql 쿼리가 포함되어 있다는 것입니다. 메인 로그에 SQL 쿼리를 쓰지 않으려면 어떻게해야합니까? 파일 ..봄 - 최대 절전 모드 로깅 - 별도의 로그 파일

#application log properties 
log4j.appender.rollingFile = org.apache.log4j.DailyRollingFileAppender 
log4j.appender.rollingFile.File = C:\\myapp\\logs\\app.log 
log4j.appender.rollingFile.Threshold = TRACE 
log4j.appender.rollingFile.DatePattern = '.'yyyy-MM-dd 
log4j.appender.rollingFile.layout = org.apache.log4j.PatternLayout 
log4j.appender.rollingFile.layout.ConversionPattern=%d %5p [%C:%M:%L] - %m%n 
log4j.rootLogger = ERROR, rollingFile 

#hibernate properties 
log4j.appender.file = org.apache.log4j.DailyRollingFileAppender 
log4j.appender.file.File = C:\\myapp\\logs\\sql.log 
log4j.appender.file.Threshold = TRACE 
log4j.appender.file.DatePattern = '.'yyyy-MM-dd 
log4j.appender.file.layout = org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d %5p [%C:%M:%L] - %m%n 
log4j.logger.jdbc.sqltiming = DEBUG, file 

답변

2

이것은 log4j에서 애펜더의 가중치 동작입니다. 주어진 로거

각 활성화 로깅 요청 는 모든 로거의 펜더뿐만 아니라 계층 높은 펜더 로 전달한다.

그냥 부모 로거 '펜더에 전파되지 않습니다 허위 로그 메시지에 대한 로거 jdbc.sqltiming에 대한 가산을 설정 (즉, app.log)

log4j.additivity.jdbc.sqltiming = false 

참고 :

See the section Appenders and Layouts for more information about Appender Additivity

+0

감사합니다. Nathan and ken .. 또한 현재의 구성 로그 파일에는 날짜가 롤오버 될 때까지 날짜가 붙지 않습니다. 오늘의 로그는 자정까지 "app.log"에 쓰여지고 "app.log.2011-08- 12 "- log4j 문서화에 따라 실제 beahavior가 예상됩니다. 그러나 로그가 현재 날짜에 기록되도록이 동작을 변경하는 방법이 있습니까? 내 말은 자정 전에 "app.log.2011-08-12"를 볼 수 있어야한다는 것을 의미합니다. log4j-extra를 사용하면 XML 설정이 마음에 들지 않으며 원치 않을 것이라고 생각합니다. 거기에 .. 미리 감사드립니다 – RKodakandla

+0

@rrkwells, 당신은'DatedFileAppender'를 사용하려고 할 수도 있습니다 .DetailFileAppender에 의해 생성 된 로그 파일 이름은 log4j와 함께 배송되는'DailyRollingFileAppender'와는 달리 오늘의 날짜를 항상 포함합니다. http://logging.apache.org/catalog.html –