Log4j2基于时间的触发策略

时间:2016-05-03 13:44:28

标签: java log4j2

我在RollingFileAppender中使用了基于TimeBased的触发策略。

manual中说:

  

根据最具体的时间单位进行翻转的频率   在日期模式

最具体的时间单位是什么?它是第一个还是最后一个参数? 我希望文件每周翻转一次。

这是我的代码:

<RollingFile name="RollingFile" fileName="${baseDir}/giba.log" filePattern="${baseDir}/giba-%d{w}-%i.log">
    <PatternLayout pattern="%d{dd.MM.yyyy HH:mm:ss.SSS} [%t] %-5level - %msg%n"/>
    <Policies>
        <TimeBasedTriggeringPolicy interval="7" modulate="true" />
    </Policies>
        <DefaultRolloverStrategy>
            <Delete basePath="${baseDir}" maxDepth="0">
              <IfFileName glob="*.log" />
              <IfLastModified age="7d" />
            </Delete>
      </DefaultRolloverStrategy>
</RollingFile >

1 个答案:

答案 0 :(得分:2)

大多数特定时间单位意味着最小。您的文件模式使用&#39; w&#39;所以它会每周滚动。但是,您的间隔为7,这意味着您希望文件在该周内翻转7次。

坦率地说,我想弃用TimeBasedRolloverStrategy。这是令人困惑的,只能确定它是否应该作为编写日志事件的一部分滚动。 CronTriggeringPolicy使用cron表达式,因此根本不依赖于文件模式。它也是从调度程序线程驱动的,因此无论是否记录任何内容都会发生。