log4j2定期清理日志文件

时间:2017-01-21 22:27:43

标签: java log4j2 rollingfileappender

我使用log4j2来记录我的程序。在我的xml配置文件中,我有这个appender:

<RollingFile name="General" fileName="log/logs/giornale.log" filePattern="log/logs/log-%d{yyyyMMdd}.log">
    <PatternLayout>
        <Pattern>%d{HH:mm:ss,SSS} [%t] %-5level %logger{-1} - %msg%n</Pattern>
    </PatternLayout>
    <Policies>
        <TimeBasedTriggeringPolicy />
    </Policies>
</RollingFile>

我需要的是一种配置方式,以便自动删除超过n天的所有文件 我已经找到了一些问题,例如this,但是他们没有帮助,因为他们没有通过xml配置说明如何做到这一点。
为了缩短它,我想在哪里指出像&#34; MaxBackupIndex&#34;在上面的片段?或者我应该使用哪个其他参数(我可以把它放在哪里)?

2 个答案:

答案 0 :(得分:5)

在&#39; RollingFile&#39;下添加以下标记标签。删除&#39;政策&#39;标签。你可能不需要它。

  <DefaultRolloverStrategy>
    <Delete basePath="log/logs" maxDepth="2">
      <IfLastModified age="60d" />
    </Delete>
  </DefaultRolloverStrategy>

使用此配置,将自动删除超过60天的日志。

有关更多配置信息,请参阅log4j2 docs

答案 1 :(得分:2)

您可以将DefaultRolloverStrategy添加到xml中作为 -

<RollingFile name="General" fileName="log/logs/giornale.log" filePattern="log/logs/log-%d{yyyyMMdd}.log">

  <PatternLayout>
    <Pattern>%d{HH:mm:ss,SSS} [%t] %-5level %logger{-1} - %msg%n</Pattern>
  </PatternLayout>

  <Policies>
    <TimeBasedTriggeringPolicy />
  </Policies>

  <DefaultRolloverStrategy max="<specify maximum archive count>"/>

</RollingFile>

同样,您可以使用 -

将基于时间和大小的滚动组合用于日志
<Policies>
    <TimeBasedTriggeringPolicy interval="6" modulate="true"/>
    <SizeBasedTriggeringPolicy size="250 MB"/>
</Policies>
  

..一个使用RollingFileAppender同时使用的示例配置   基于时间和大小的触发策略,最多可创建7个档案   在同一天(1-7)存储在基于的目录中   当前年份和月份,并将使用gzip压缩每个存档   当小时可被6整除时,每6个小时会滚动一次