我有一个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”不会被覆盖,并且所有内容都会附加在日志的末尾。
答案 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)