log4j2 - 限制日志文件的数量

Posted

技术标签:

【中文标题】log4j2 - 限制日志文件的数量【英文标题】:log4j2 - limiting the number of log files 【发布时间】:2012-11-10 06:18:10 【问题描述】:

我有以下 log4j2.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
  <appenders>
    <RollingFile name="testLog" fileName="test.log" filePattern="" append="false">
      <PatternLayout pattern="[%t] %-5level - %msg%n%n"/>
    <SizeBasedTriggeringPolicy size="5mb" />
    </RollingFile>
  </appenders>
  <loggers>
    <logger name="TestsLogger" level="trace" additivity="false">
      <appender-ref ref="testLog"/>
    </logger>
    <root level="debug">
      <appender-ref ref="testLog"/>
    </root>
  </loggers>
</configuration>

我怎样才能修改这个配置,这样

    在达到 5mb 限制后会创建一个新文件,而不是一遍又一遍地覆盖相同的日志文件。最好有 test1.log、test2.log 等。

    如何限制在 1. 中创建的部分日志文件的数量?我想要实现的是如下方案:

    creating test1.log [present log files: test1.log]
    test1.log - 5mb limit reached
    creating test2.log [present log files: test1.log, test2.log]
    test2.log - 5mb limit reached
    creating test3.log [present log files: test2.log, test3.log]
    test3.log - 5mb limit reached
    creating test4.log [present log files: test3.log, test4.log]
    and so on
    

有谁知道,如何实现这样的目标?当然,如果仅使用 log4j2 就可以实现类似的功能,那就太好了。但也许有一种方法可以将 log4j2 与某种外部程序结合起来,该程序将与主 Java 应用程序一起运行并删除多余的日志文件,同时保持最后两个日志文件完好无损。因此,如果有人至少对 1. 提出建议,那可能已经是我正在寻找的东西了。因为我也许可以为第二部分编写程序。当然,如果第二部分也可以使用 log4j2 完成,那就太棒了。

【问题讨论】:

【参考方案1】:

到目前为止,我从未使用过 log4j2,但RollingFileAppender 的文档为您提供了很多配置示例。

有趣的是你的接缝是这样的(使用DefaultRolloverStrategy):

<RollingFile name="RollingFile" fileName="logs/app.log"
             filePattern="logs/$$date:yyyy-MM/app-%dMM-dd-yyyy-%i.log.gz">
  <PatternLayout>
    <pattern>%d %p %C1. [%t] %m%n</pattern>
  </PatternLayout>
  <Policies>
    <SizeBasedTriggeringPolicy size="5 MB"/>
  </Policies>
  <DefaultRolloverStrategy max="20"/>
</RollingFile>

【讨论】:

抱歉反应迟了。我只是想感谢你的回答。它将作为我将来可能进一步使用 log4j2 的示例。 @FrVaBe:这完美无缺。请注意所有请同时包含 fileName 和 filePattern 以使其正常工作。

以上是关于log4j2 - 限制日志文件的数量的主要内容,如果未能解决你的问题,请参考以下文章

Log4j2中RollingFile的文件滚动更新机制

如何在 Spring Boot 应用程序中使用 log4j2 根据大小生成新的日志文件

docker 限制日志文件大小和数量

NLog 文件名中的日期并限制日志文件的数量

限制Log4j2日志最大输出长度

Log4j2 每日日志文件