【问题标题】:Overwriting log4j not working覆盖 log4j 不起作用
【发布时间】:2013-01-15 09:08:08
【问题描述】:

我有一个具有以下配置的 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”不会被覆盖,所有内容都被附加到日志的末尾。

【问题讨论】:

  • 在 webapp 容器中 log4j.properties 可能被放入 WEB-INF/ 以便被加载
  • server-log4j.properties 基于服务器。

标签: java properties configuration log4j


【解决方案1】:

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

【讨论】:

  • 是的,确实可以。所以我想我应该使用 DailyRollingFileAppender,但我不想保留历史日志,只保留当前的日志。
  • 您可以使用 TimeBasedRollingPolicy 压缩历史日志
【解决方案2】:

检查this。 您应该使用带有大写字母 A 的 Append。

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

【讨论】:

  • 不,所有内容都附加在日志末尾,没有警告和错误。
【解决方案3】:

对于 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)

【讨论】:

  • 对不起,我不想在文件达到一定大小时滚动它,我想每天滚动它。问题是上面的配置在windows+geronimo环境下工作,在linux+websphere上不行。
猜你喜欢
  • 2011-03-24
  • 2014-04-03
  • 2015-03-16
  • 2016-03-18
  • 2020-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多