新的一天发生时,TimeBasedTriggeringPolicy log4j2不会滚动



我已经配置了以下配置的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" }
      }
    }
  }
}

添加:

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

政策解决了问题。

来自log4j2文档:

,如果日志文件比当前的JVM的开始时间且最小文件大小满足或超过当前的JVM,则onstartupTriggeringPolicy策略会导致翻转。

onstartuptriggeringpolicy参数:

lemsize:long:文件必须翻滚的最小尺寸。无论文件大小如何,零的大小都会导致滚动。默认值为1,它将阻止在空文件上滚动

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

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

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

最新更新