3

我有一个使用 log4j 在 Windows 服务器环境中的 Websphere 上运行的应用程序。系统正在记录并且似乎遵守 log4j.properties 中定义的 MaxFileSize 限制(20KB - 见下文),但没有滚动日志文件。相反,它只是覆盖现有的日志文件。

这是我在 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 看到该文件正在使用中并阻止它被移动。但我不确定这一点。

任何人都看到日志文件不会滚动的任何原因?或者我的理论是否正确?

4

1 回答 1

3

我的问题的解决方案是将 log4j 设置为 WebSphere 中的共享 jar 文件。每个单独的应用程序都有一个对 log4j 开放的文件描述符,以防止日志在遇到MaxFileSize.

一旦我将 log4j 设置为共享 jar 并退回服务器,日志就会按预期滚动。我用多种尺寸对此进行了测试,MaxFileSize并且都按预期工作。

于 2013-03-19T19:53:54.870 回答