我如何获得log4j删除旧的循环日志文件?我知道我可以设置自动化作业(UNIX的cron和Windows的计划任务),但我希望它跨平台,我希望它在我们应用程序的日志配置中作为我们应用程序的一部分,而不是在操作系统之外的单独代码中特定的脚本语言。我们的应用程序不是用OS脚本语言编写的,我不想在它们中做这部分。如何获得log4j删除旧的循环日志文件?
50
A
回答
44
RollingFileAppender进行此操作。您只需将maxBackupIndex设置为备份文件的最大值即可。
37
日志旋转是有原因的,所以你只能保存这么多的日志文件。在log4j.xml文件,你可以添加到您的节点:
<param name="MaxBackupIndex" value="20"/>
值告诉的log4j.xml到只保留大约20个旋转的日志文件。如果你想要甚至1,你可以将它限制为5个。如果你的应用程序没有记录那么多的数据,并且你有20个日志文件跨越过去8个月,但你只需要几周的日志,那么我认为你需要调整你的log4j.xml“MaxBackupIndex”和“MaxFileSize”参数。
另外,如果您使用的是属性文件(而不是XML)和要保存15个文件(例如)
log4j.appender.[appenderName].MaxBackupIndex = 15
+6
这是否适用于DailyRollingFileAppender? – rogerdpack 2014-03-27 17:44:30
7
没有默认值来控制删除由DailyRollingFileAppender创建的旧日志文件。但是您可以编写自己的自定义Appender,以与为RollingFileAppender设置maxBackupIndex的方式非常相似的方式删除旧日志文件。
简单的指令发现here
从1:
如果你想使用Apache Log4J的DailyRollingFileAppender为每天的日志文件,则可能需要要指定文件的最大数量即应被保存。就像滚动RollingFileAppender支持maxBackupIndex一样。但是,如果您使用的是DailyRollingFileAppender,则当前版本的Log4j(Apache log4j 1.2.16)不提供任何删除旧日志文件的机制。我试图在DailyRollingFileAppender的原始版本中进行小的修改以添加maxBackupIndex属性。因此,可以清理未来使用时可能不需要的旧日志文件。
相关问题
- 1. 滚动日志文件和删除旧的日志文件
- 2. Util日志记录不会删除旧日志文件轮流
- 3. 如何删除旧的log4net日志文件?
- 4. 如何输出环境变量,Grails的log4j的日志文件
- 5. 如何自动删除日志文件?
- 6. 删除OpenLDAP日志文件
- 7. 解析log4j日志文件
- 8. 多个log4j日志文件
- 9. log4j如何每天自动创建一个新的日志文件而不需要归档旧日志文件
- 10. Log4j 2日志正在写入Log4j日志文件
- 11. 使用Log4j的日期日志文件
- 12. 的Log4j + JSF - 日志文件是空的
- 13. 删除X个文件X旧日--Powershell
- 14. 使用Log4j的多个日志文件
- 15. 我的log4j日志文件太大
- 16. 如何删除Log4Net单文件中的旧日期条目
- 17. 使用PowerShell删除事件日志的旧条目?
- 18. 在Log4j的日志条目中包含日志文件名
- 19. 日志 - 如何删除日志文件中的数据库信息
- 20. logback:TimeBasedRollingPolicy每日滚动工作,但所有旧日志文件被删除
- 21. n日志旧存档文件不会被删除:archiveNumbering =日期,archiveOldFileOnStartup,maxArchiveFiles
- 22. 删除旧的.lck文件
- 23. log4j - 如何在文件名中包含日期/时间并删除较早的日志?
- 24. Plesk删除IIS日志文件?
- 25. Jetty每天删除日志文件
- 26. x天后删除日志文件
- 27. 使用PowerShell删除日志文件
- 28. 删除while循环内的文件
- 29. 日志log4j中没有生成文件
- 30. log4j console appender和日志文件大小
有没有办法与DailyRollingFileAppender做到这一点? – 2012-07-16 18:21:23