7

我正在使用 TimeBasedRollingPolicy 和 RollingFileAppender 让我的日志滚动并存档为 myLogFileName..log.gz:

    <appender class="org.apache.log4j.rolling.RollingFileAppender" name="myLogFile">
    <param value="/var/log/my/myLogFileName.log" name="File"/>
    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
        <param name="FileNamePattern" value="/var/log/my/myLogFileName.%d.log.gz" />
    </rollingPolicy>
    <layout class="org.apache.log4j.PatternLayout">
        <param value="%d [%t] %-5p - %m%n" name="ConversionPattern"/>
    </layout>
</appender>

我不明白 - 它是在何时以及如何从文件系统中完全删除真正旧的存档文件定义的?

而且,如果我只想保留不超过一个月的文件 - 我可以在哪里设置它(使用 log4j(附加))?

4

1 回答 1

0

TimeBasedRollingPolicy由 定义apache-log4j-extras。这个依赖项需要在类路径上才能使用该策略。

RollingFileAppender包括一个maxBackupIndex属性,它指定要保留的翻转备份文件的最大数量。但是,我不相信在使用TimeBasedRollingPolicy. 这意味着,当与 一起使用时RollingFileAppenderTimeBasedRollingPolicy附加程序不会删除旧的备份文件。

如果您使用 Logback 作为日志记录实现(可能与 SLF4J 结合使用),那么您可以使用 Logback 实现所需的结果RollingPolicy。我承认问题是寻求 log4j 解决方案,但我不知道。

于 2021-01-22T03:06:26.257 回答