我使用log4j2作为我的应用程序日志,我使用的是XML,下面的配置是针对日志的,它会将日志每天移动到旧文件夹,但它不会删除
<RollingFile name="fileappenderMAIL" fileName="/home/server/logs/EMAIL/SM_Mail.log"
filePattern="/home/server/logs/old/$${date:yyyy-MM}/EMAIL/SM_Mail-%d{dd-MM-yyyy}-%i.log.gz" immediateFlush="false">
<PatternLayout pattern="%d %p %C{1.} [%t] %m%n" />
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="10 MB"/>
</Policies>
<DefaultRolloverStrategy >
<Delete basePath="/home/server/logs/old/" maxDepth="3">
<IfFileName glob="*/EMAIL/SM_Mail-??-??-????-*.log">
<IfAny>
<IfAccumulatedFileSize exceeds="10 KB" />
<IfAccumulatedFileCount exceeds="30" />
</IfAny>
</IfFileName>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
它应该删除旧元素,让任何人知道我错过了什么或做错了什么?
Dunno如果它有用但我在Wildfly 10中使用Java 7和Log4j 2.8.1版进行部署,我也使用com.lmax.disruptor来使用AsyncLoggers
由于
答案 0 :(得分:0)
您可以通过将配置文件更改为以<Configuration status="trace">
开头来调查发生的情况。这将打印内部Log4j2日志记录到控制台。
在翻转期间,这将为您提供有关Delete
操作所考虑的文件和目录以及决定不执行任何操作的原因的信息。
感谢您的评论,我看到现在的问题。 glob模式匹配以.log
结尾的文件。翻转模式导致文件以.log.gz
结尾。 (与注释中提到的文件相同。)glob不匹配,因此不删除文件。