我一直在尝试存档比某段时间更早的应用程序日志文件。注意到自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>
答案 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改为正则表达式也解决了这个问题。