log4j:删除策略的归档文件

时间:2013-10-14 09:35:08

标签: java log4j

我正在使用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(额外))?

2 个答案:

答案 0 :(得分:1)

您的问题已在此处How can I get log4j to delete old rotating log files?

得到解答

RollingFileAppender执行此操作。您只需将maxBackupIndex设置为备份文件的最高值。

或者您可能想要使用脚本 How to configure log4j to only keep log files for the last seven days?

答案 1 :(得分:0)

TimeBasedRollingPolicyapache-log4j-extras 定义。此依赖项需要位于类路径上才能使用该策略。

RollingFileAppender 包含一个 maxBackupIndex 属性,它指定要保留的最大滚动备份文件数。但是,我认为使用 TimeBasedRollingPolicy 时不支持此属性。这意味着,当将 RollingFileAppenderTimeBasedRollingPolicy 一起使用时,appender 不会删除旧的备份文件。

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