使用log4j2 2.5存档日志文件

时间:2017-01-24 06:22:25

标签: java xml configuration archive log4j2

我一直在尝试存档比某段时间更早的应用程序日志文件。注意到自log4j 2.5以来我们有一个Delete标签,您可以根据我们可以删除/存档我们的日志来定义标准。尝试使用这个,但我不知道怎么能破解它。尝试使用30天30d值并且不能在我的服务器上运行,也不是在我的开发机器中工作的20秒策略PT20S

非常感谢任何方向。

XML如下:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{yyyyMMdd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
    </Console>
    <RollingFile name="RollingFile" fileName="C://logs///test.log" filePattern="C://logs//test-%d{MM-dd-yyyy}.log.gz" ignoreExceptions="false">
      <PatternLayout pattern="%d{yyyyMMdd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
      <TimeBasedTriggeringPolicy />
      <DefaultRolloverStrategy>
        <Delete basePath="C://logs//" maxDepth="2">
          <IfFileName glob="*/test-*.log.gz" />
          <IfLastModified age="PT20S" />
        </Delete>
      </DefaultRolloverStrategy>
    </RollingFile>
   </Appenders>
  <Loggers>
    <Root level="INFO">
      <AppenderRef ref="Console" />
      <AppenderRef ref="RollingFile" />
    </Root>
  </Loggers>
</Configuration>

1 个答案:

答案 0 :(得分:1)

如果您正在使用Windows,则RollingFile appender的文件和filePattern可以使用单斜杠。双斜线可能会混淆它。

您可以通过在配置文件的开头设置<Configuration status="trace">来进行调试。

更新

翻转的文件最终出现在c:/ logs目录(filePattern="C://logs//test-%d{MM-dd-yyyy}.log.gz")中。

但是,“删除”操作配置为仅查看以“log.gz”结尾的文件,这些文件位于c:/ logs的子目录中。 c:/ logs目录中的文件本身与glob="*/test-*.log.gz"不匹配。

要解决此问题,请使用glob="test-*.log.gz"。 在评论中提到将glob改为正则表达式也解决了这个问题。