Log4J2:翻转后清除旧的日志文件

时间:2014-05-12 08:16:56

标签: log4j2

我最近一直在使用log4j2而且遇到了问题。发生翻转时,活动日志文件会保留其日志。是否可以清除日志文件,以便滚动文件只保留他们在名称中指定的时间段的日志?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您要求RolloverFileAppender增加一项功能。此功能允许您指定时间段。在每次翻转时,RolloverFileAppender不仅会翻转当前日志文件,还会检查以前翻过的文件,并删除之前翻过的文件,这些文件早于指定的时间段。

这是你要问的吗?目前不存在此类功能,但此处有一项出色的功能请求:https://issues.apache.org/jira/browse/LOG4J2-524 您可能希望为此问题投票或添加评论,以便团队了解有更多用户对此功能感兴趣。


2016年1月更新:上述功能已实施。

从2.5开始,Log4j支持在每次翻转时执行的custom Delete action

您可以通过以下任意组合控制删除哪些文件:

  1. 姓名(匹配globregex
  2. Age(“如果14天或更长时间删除”)
  3. 计数(“只保留最近的3”)
  4. 大小(“仅保留最近500MB的文件”)
  5. 需要对要删除的文件进行更细粒度控制的用户可以使用任何受支持的JSR-223脚本语言指定脚本条件。

    请查看documentation,它有三个可能有用的完整示例。

    对于您的问题,此代码段可能有效:

      <DefaultRolloverStrategy>
        <!--
          * only files in the log folder, no sub folders
          * only rolled over log files (name match)
          * only files 30 days old or older
        -->
        <Delete basePath="rolledoverlogs" maxDepth="1">
          <IfFileName glob="my-log*.log.gz" />
          <IfLastModified age="30d" />
        </Delete>
      </DefaultRolloverStrategy>
    

    最后,小心!没有办法恢复以这种方式删除的文件。 : - )