2013-03-11 40 views
3

我有一個應用程序運行在Windows服務器環境中的Websphere利用log4j。系統正在進行日誌記錄,似乎遵守log4j.properties(20KB - 見下文)中定義的MaxFileSize限制,但不會滾動日誌文件。相反,它只是覆蓋現有的日誌文件。log4j文件不滾動 - Websphere 7,Windows

這裏是WebSphere定義我的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 

我的理論是,應用程序/ JVM是抱着到日誌文件時的參考的log4j試圖以更新文件,並Windows正在使用該文件並阻止其被移動。但我不確定這一點。

任何人看到任何原因爲什麼日誌文件不會滾動?或者我的理論是否正確?

回答

3

我的問題的解決方案是將log4j設置爲WebSphere中的共享jar文件。每個應用程序都有一個打開log4j的文件描述符,防止日誌在碰到MaxFileSize時滾動。

一旦我將log4j設置爲共享jar並退回服務器,日誌將按預期進行滾動。我測試了MaxFileSize的多種尺寸,並且按預期工作。