【问题标题】:using log4j for clearing a file?使用 log4j 清除文件?
【发布时间】:2011-05-30 05:21:46
【问题描述】:

我使用 log4j 写入具有以下属性文件的文件:

log4j.rootLogger=DEBUG, FA

#File Appender
log4j.appender.FA=org.apache.log4j.FileAppender
log4j.appender.FA.File=temp.ppr
log4j.appender.FA.layout=org.apache.log4j.PatternLayout
log4j.appender.FA.layout.ConversionPattern= %m%n

我的问题是,在我的程序的每次运行中,我想清除文件“temp.ppr”,然后用 lo4j 有效地写入它?还是您推荐其他解决方案?

谢谢

【问题讨论】:

    标签: java log4j text-files appender


    【解决方案1】:

    您是否尝试过将FileAppender 上的append 属性设置为false

    log4j.appender.FA.append=false
    

    【讨论】:

    • 我认为这应该是答案。
    【解决方案2】:

    你可以这样做:

    log4j.appender.FA=org.apache.log4j.RollingFileAppender
    log4j.appender.FA.MaxBackupIndex=1
    

    然后在应用的启动代码中:

    ((RollingFileAppender)Logger.getRootLogger().getAppender("FA")).rollOver()
    

    这样,对于程序的每次运行,现有日志都会移动到“temp.ppr.1”,并且“temp.ppr”会重新开始。这样一来,您也始终拥有上一次运行的日志。

    【讨论】:

    • 我喜欢你的解决方案,但我对 RollingFileAppender 的问题是你必须限制文件大小,而我无法在我的程序中确定这个大小。如果我错了,请纠正我?
    • @RanZilber:将大小设置为一个大得离谱的值(如 1 TB)应该可以解决这个问题。但除非您的程序的主要目的是在日志文件中生成大量数据,否则您可能想要相当大的界限。
    【解决方案3】:

    我建议作为您的构建工具(Apache Ant 或 Maven)的一部分,负责清除您不想要的文件。或者,如果您想保留备份,可以使用RollingFileAppender

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-05
      • 1970-01-01
      • 2020-05-16
      • 2021-09-02
      • 1970-01-01
      • 2011-02-11
      • 2010-11-07
      • 1970-01-01
      相关资源
      最近更新 更多