有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

如何在log4j日志文件正在使用时(而不仅仅是在启动时)清除它们?我的第一个想法是

  • 获取现有的FileAppender FA
  • 获取FA的所有属性
  • 从根记录器中删除FA
  • 删除FA登录的文件
  • 创建具有相同FA属性的新文件appender FA2
  • 将FA2添加到根记录器

How do I make log4j clear a log at startup?建议强制翻车

有更好的办法吗

一些细节:我正在改进一个可以被视为两个应用程序的工具:一个使用log4j的“内部”应用程序日志记录,一个通过gui显示该日志的“外部”应用程序日志记录。内部和外部应用程序共享它们的jvm。内部的一个可以通过gui多次启动。现在我想清除日志,以便它只显示上次运行的输出

我只局限于小的更改,所以让内部应用程序在自己的jvm中运行不是一个选项。整个工具的频繁重启也是如此


共 (2) 个答案

  1. # 1 楼答案

    尝试使用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时,日志将重新开始

  2. # 2 楼答案

    使用log4j中附加的滚动文件

    每次运行都会销毁日志文件

    谢谢和问候, 哈里