如何在使用时(不仅仅是在启动时)清除 log4j 日志文件?我的第一个想法是
- 获取现有的 FileAppender FA
- 获取 FA 的所有属性
- 从根记录器中删除 FA
- 删除FA登录的文件
- 创建一个与 FA 具有相同属性的新文件附加器 FA2
- 将 FA2 添加到根记录器
How do I make log4j clear a log at startup?建议强制滚动
有更好的方法吗?
一些细节:我正在改进一种可以视为两个应用程序的工具:一个使用 log4j 进行日志记录的“内部”应用程序和一个通过 gui 显示此日志的“外部”应用程序。内部和外部应用程序共享它们的jvm。内部的可以通过 GUI 多次启动。我现在想清除日志,使其仅显示上次运行的输出。
我仅限于进行小的更改,因此让内部应用程序在其自己的 jvm 中运行不是一种选择。整个工具的频繁重启也不是。
最佳答案
尝试使用 MaxBackupIndex,如下所示:
log4j.appender.myproject=org.apache.log4j.RollingFileAppender
log4j.appender.myproject.File=/export/logs/myproject.log
log4j.appender.myproject.MaxFileSize=10000KB
log4j.appender.myproject.MaxBackupIndex=0
log4j.appender.myproject.layout=org.apache.log4j.PatternLayout
当文件大小达到 10MB 时,日志将重新开始。
关于java - log4j,在使用时清除日志(不仅仅是在启动时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25039981/