2

我有一个具有以下配置的 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 配合得很好。

我还想在“日志”文件夹中记录当天的日志。这在我的本地主机(Windows + Eclipse + Geronimo)上运行良好,但在我的测试服务器(Linux + WebSphere)上运行不正常。在这种情况下,“app.log”不会被覆盖,所有内容都被附加到日志的末尾。

4

3 回答 3

5

AFAIKRolling file appender只会在达到指定的最大大小时滚动文件。每次重新启动应用程序时,上述场景可能在本地副本中为您工作,日志文件将因为.append = false. 在生产环境中,我认为服务器不会重新启动,这就是文件按照.append = false. 这可能是您的情况,为什么覆盖不起作用?

于 2013-02-06T13:31:35.013 回答
1

检查这个。您应该使用带有大写 A 的 Append。

    log4j.appender.LOG.Append=false 
    log4j.appender.LOGHISTORY.Append=true
于 2013-01-15T15:30:11.717 回答
0

对于 RollingFileAppender,您需要指定属性“MaxFileSize”。这将告诉 log4j 在文件达到该大小时滚动文件。

eg: 当日志文件大小达到 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)
于 2013-02-06T00:45:41.297 回答