我怎样才能得到log4j删除旧的旋转日志文件?

我怎样才能得到log4j删除旧的旋转日志文件? 我知道我可以设置自动化作业(UNIX的cron和Windows的预定任务),但是我希望它跨平台,而且我们希望它在我们的应用程序的日志configuration中作为应用程序的一部分,而不是在操作系统之外的单独的代码中特定的脚本语言。 我们的应用程序不是用OS脚本语言编写的,我不想在它们中做这个部分。

RollingFileAppender这样做。 您只需要将maxBackupIndex设置为备份文件的最高值即可。

日志旋转的原因,所以你只能保持这么多的日志文件。 在log4j.xml中,您可以将其添加到您的节点:

<param name="MaxBackupIndex" value="20"/> 

该值告诉log4j.xml只保留20个循环的日志文件。 如果你需要,甚至1,你可以将它限制为5.如果你的应用程序没有logging那么多的数据,并且你有20个日志文件跨越过去8个月,但是你只需要一个星期的日志值,那么我认为你需要调整你的log4j.xml“MaxBackupIndex”和“MaxFileSize”参数。

或者,如果您正在使用属性文件(而不是xml)并希望保存15个文件(例如)

 log4j.appender.[appenderName].MaxBackupIndex = 15 

没有默认值来控制删除由DailyRollingFileAppender创build的旧日志文件。 但是你可以编写自己的自定义Appender来删除旧的日志文件,就像为RollingFileAppender设置maxBackupIndex一样。

简单说明在这里find

从1 :

如果您正尝试将Apache Log4J DailyRollingFileAppender用于每日日志文件,则可能需要指定应保留的最大文件数。 就像滚动RollingFileAppender支持maxBackupIndex。 但是,如果您使用的是DailyRollingFileAppender,则当前版本的Log4j(Apache log4j 1.2.16)不提供任何删除旧日志文件的机制。 我试图在DailyRollingFileAppender的原始版本中进行小的修改,以添加maxBackupIndex属性。 因此,可能会清理旧日志文件,这些日志文件可能不是将来需要使用的文件。