我正在使用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(额外))?
答案 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)
TimeBasedRollingPolicy
由 apache-log4j-extras
定义。此依赖项需要位于类路径上才能使用该策略。
RollingFileAppender
包含一个 maxBackupIndex
属性,它指定要保留的最大滚动备份文件数。但是,我认为使用 TimeBasedRollingPolicy
时不支持此属性。这意味着,当将 RollingFileAppender
与 TimeBasedRollingPolicy
一起使用时,appender 不会删除旧的备份文件。
如果您使用 Logback 作为日志记录实现(可能与 SLF4J 结合使用),那么您可以使用
回滚RollingPolicy
。我承认问题是寻求 log4j 解决方案,但我不知道。