java - log4j,在使用时清除日志(不仅仅是在启动时)

标签 java log4j

如何在使用时(不仅仅是在启动时)清除 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/

相关文章:

tomcat - Grails 外部配置日志记录

java - Android Studio : com. google.android.gms.internal.zzbgl 未找到

java - 将包含 dll 的目录添加到 gradle 作为路径?

Java 不使用 Eclipse 连接到 MS Access 数据库

java - 如何创建log4j文件并运行程序

log4j:无法识别的元素滚动策略

java - KeyListener 没有按照我想要的方向键工作方式工作?

java - 将 Java Bean 集合作为数据源传递给 Jasper,如何在 ireports 中设计它

java - 无法抑制 jar 中的日志输出

java - 是否可以让 log4j 显示它用来配置自己的文件?