log4j:删除策略的归档文件

jav*_*irl 6 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>
Run Code Online (Sandbox Code Playgroud)

我不明白 - 是什么时候定义了什么时候以及如何将旧的归档文件从文件系统中完全删除?

并且,如果我想要始终只保留不超过一个月的文件 - 我可以设置它(使用log4j(额外))?

gra*_*ntn 1

TimeBasedRollingPolicy定义为apache-log4j-extras. 为了使用该策略,这种依赖关系需要位于类路径上。

RollingFileAppender包括一个maxBackupIndex属性,该属性指定要保留的滚动备份文件的最大数量。但是,我不认为使用TimeBasedRollingPolicy. 这意味着,RollingFileAppender与 一起使用时TimeBasedRollingPolicy,旧的备份文件不会被附加程序删除。

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