log4jを利用するWindowsサーバー環境のWebsphereで実行されているアプリケーションがあります。システムはログを記録しており、log4j.properties(20KB-以下を参照)で定義されているMaxFileSize制限に準拠しているように見えますが、ログファイルをローリングしていません。むしろ、それは単に既存のログファイルを上書きしているだけです。
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
私の理論では、log4jがファイルをロールしようとしたときに、アプリケーション/ JVMがログファイルへの参照を保持しており、Windowsはそのファイルが使用中であることを確認し、ファイルの移動を阻止しています。しかし、私はこれを確かに知りません。
ログファイルがロールオーバーされない理由を誰かが見ていますか?それとも私の理論は正しいでしょうか?