TimeBasedTriggeringPolicy log4j2在新的一天发生时不会翻转

问题描述 投票:0回答:2

我已经使用以下配置配置了Log4j2,但TimeBasedTriggeringPolicy无效,我在旧日的日志中获取新的日志,请你帮忙。由于我已经为DefaultRollOverStrategy指定了“nomax”属性,因此只有TimeBasedTriggeringPolicy无效,因此它正在适当地滚动大小,并且还创建了任意数量的文件。它在前一天的日志文件中写入一天的日志。它确实创建了具有最新日期的新日志文件,但是某些日志已登录到前一天的日志中。可能在正确命名文件时遇到问题我不知道。

  {
  "Configuration": {
    "Properties": {
      "Property": [
        {
          "name": "application",
          "value": "myapp"
        }
      ]
    },
    "Appenders": {
      "Console": {
        "name": "Console-Appender",
        "target": "SYSTEM_OUT",
        "PatternLayout": {
          "pattern": "%d{yyyy-MM-dd HH:mm:ss,SSS} ${application} %-5level %marker %t %c{5}  %msg%n"
        },
         "ThresholdFilter": { "level": "error" }
      },
      "RollingFile": [
        {
          "name": "File-Appender",
          "fileName":"${sys:log.path}/${application}.log",
          "filePattern":"${sys:log.path}/${application}-%d{yyyy-MM-dd}-%i.log",
          "PatternLayout": {
            "pattern": "%d{yyyy-MM-dd HH:mm:ss,SSS} ${application} %-5level %marker %t %c{5}  %msg%n"
          },
          "Policies": {
            "TimeBasedTriggeringPolicy": {"interval":"1", "modulate":"true" },
             "SizeBasedTriggeringPolicy": { "size": "5 KB" } 
            },
            "DefaultRolloverStrategy": {"fileIndex":"nomax"}   
        }
      ]
    },
    "loggers": {
      "logger":{
        "name": "com.mycompany",
        "level": "${sys:log.level}",
        "AppenderRef": { "ref": "File-Appender"}
      },
      "root": {
        "level": "error",
        "AppenderRef": { "ref": "Console-Appender" }
      }
    }
  }
}
log4j2 rollover
2个回答
0
投票

CronTriggeringPolicy怎么样?这将在每天凌晨12点为您触发翻转:

{"CronTriggeringPolicy": {"schedule": "0 0 0,12 * * ?"}

这样,它将不依赖于文件模式,并且应该按照cron间隔滚动日志。我也不知道您如何确定前一天的日志包含在翻转中,但请确保您的系统时间是同步的。


0
投票

添加:

"OnStartupTriggeringPolicy": {"minSize":"0"}

政策解决了问题。

从log4j2文档:OnStartup触发策略如果日志文件早于当前JVM的开始时间且达到或超过最小文件大小,则OnStartupTriggeringPolicy策略将导致翻转。 OnStartupTriggeringPolicy参数:minSize:long:文件必须翻转的最小大小。无论文件大小是多少,大小为零都会导致翻转。默认值为1,这将阻止滚动空文件

© www.soinside.com 2019 - 2024. All rights reserved.