Log4j2 DefaultRolloverStrategy Configuration不会删除旧日志

时间:2017-03-16 22:18:27

标签: java logging log4j log4j2

我使用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

由于

1 个答案:

答案 0 :(得分:0)

您可以通过将配置文件更改为以<Configuration status="trace">开头来调查发生的情况。这将打印内部Log4j2日志记录到控制台。

在翻转期间,这将为您提供有关Delete操作所考虑的文件和目录以及决定不执行任何操作的原因的信息。

感谢您的评论,我看到现在的问题。 glob模式匹配以.log结尾的文件。翻转模式导致文件以.log.gz结尾。 (与注释中提到的文件相同。)glob不匹配,因此不删除文件。