2013-03-11 72 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的多种尺寸,并且按预期工作。