2013-03-11 1 views
3

log4j를 사용하는 Windows 서버 환경에서 Websphere에서 실행되는 응용 프로그램이 있습니다. 시스템이 로깅 중이며 log4j.properties (20KB - 아래 참조)에 정의 된대로 MaxFileSize 제한을 준수하지만 로그 파일은 롤링하지 않습니다. 오히려 단순히 기존 로그 파일을 겹쳐 쓰는 것입니다. 여기 log4j 파일이 롤링되지 않음 - Websphere 7, Windows

내 log4j.properties 파일은 웹 스피어에 정의되어

log4j.rootLogger=debug, file 

log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=F:\\<log_file_directory\\<log_file_name>.log 
log4j.appender.file.MaxFileSize=20KB 
log4j.appender.file.MaxBackupIndex=50 
log4j.appender.file.Append=true 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

내 이론이 응용 프로그램/log4j에 파일을 롤백 할 때 JVM이 로그 파일에 대한 참조를 잡고있다 그 Windows에서 해당 파일이 사용 중임을보고 이동하지 못하게합니다. 그러나 나는 이것을 확실히 모른다.

누구든지 로그 파일이 롤오버되지 않는 이유를 확인하십시오. 아니면 제 이론이 맞을 수 있습니까?

답변

3

내 문제의 해결책은 log4j를 WebSphere 내에서 공유 jar 파일로 설정하는 것이 었습니다. 각각의 개별 응용 프로그램에는 log4j에 대해 열린 파일 설명자가있어 MaxFileSize에 도달 할 때 로그가 롤링되는 것을 방지합니다.

log4j를 공유 jar로 설정하고 서버를 반송하면 로그가 예상대로 롤링됩니다. 나는 MaxFileSize에 대한 여러 크기로 이것을 테스트했으며 모두 예상대로 작동했습니다.