覆盖log4j无法正常工作

时间:2013-01-15 09:08:08

标签: java properties configuration log4j

我有一个log4j属性,具有以下配置:

log4j.appender.LOG=org.apache.log4j.RollingFileAppender
log4j.appender.LOG.File=${directory}/log/app.log
log4j.appender.LOG.layout=org.apache.log4j.PatternLayout
log4j.appender.LOG.layout.ConversionPattern=%d{dd MMM HH:mm:ss,SSS} %-5p [%c{1}] %m%n
log4j.appender.LOG.Threshold=DEBUG
log4j.appender.LOG.append=false
log4j.appender.LOG.bufferedIO=false

log4j.appender.LOGHISTORY=org.apache.log4j.DailyRollingFileAppender
log4j.appender.LOGHISTORY.File=${directory}/log/old-logs/app.log
log4j.appender.LOGHISTORY.File.DatePattern='.'yyyy-MM-dd
log4j.appender.LOGHISTORY.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGHISTORY.layout.ConversionPattern=%d{dd MMM HH:mm:ss,SSS} %-5p [%c{1}] %m%n
log4j.appender.LOGHISTORY.Threshold=DEBUG
log4j.appender.LOGHISTORY.append=true
log4j.appender.LOGHISTORY.bufferedIO=false

我想在“log / old-logs”文件夹中保存前一天日志的历史记录。这与DailyRollingFileAppender一起使用效果很好。

我还想在“log”文件夹中记录当天的日志。这在我的localhost(Windows + Eclipse + Geronimo)上工作正常,但在我的测试服务器(Linux + WebSphere)上无法正常工作。在这种情况下,“app.log”不会被覆盖,并且所有内容都会附加在日志的末尾。

3 个答案:

答案 0 :(得分:5)

AFAIK Rolling file appender只会在达到指定的最大尺寸时滚动文件。 每次重新启动应用程序时,上述方案可能在本地副本中为您工作,日志文件将因.append = false而被覆盖。在生产环境中,我认为服务器不会重新启动,这就是根据.append = false编写文件的原因。这可能是你为什么覆盖不起作用的情况?

答案 1 :(得分:1)

检查this。 您应该使用附加资本A。

    log4j.appender.LOG.Append=false 
    log4j.appender.LOGHISTORY.Append=true

答案 2 :(得分:0)

对于RollingFileAppender,您需要指定属性" MaxFileSize"。这将告诉log4j在达到该大小时将文件翻转过来。

例如:当日志文件大小达到2MB时,下面将翻转

log4j.appender.LOG=org.apache.log4j.RollingFileAppender
log4j.appender.LOG.File=${directory}/log/app.log
log4j.appender.LOG.layout=org.apache.log4j.PatternLayout
log4j.appender.LOG.layout.ConversionPattern=%d{dd MMM HH:mm:ss,SSS} %-5p [%c{1}] %m%n
log4j.appender.LOG.Threshold=DEBUG
log4j.appender.LOG.MaxFileSize=2MB
log4j.appender.LOG.MaxBackupIndex=2 (This is optional, tells log4j the maximum backup files to take)