如何覆盖log4j中的日志文件?

我有一个日志文件,其中添加了以下appender:

logger.addAppender(new FileAppender(new PatternLayout(),"log.txt")); 

问题是,每次我运行我的应用程序时,额外的日志记录信息都会附加到同一个日志文件中。 我每次都能覆盖文件怎么办?

使用RollingFileAppender。

如果你在属性文件中声明了这样的appender:

 log4j.appender.LOGFILE=org.apache.log4j.FileAppender log4j.appender.LOGFILE.File=file.log log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout log4j.appender.LOGFILE.layout.ConversionPattern=%d %-5p %c - %m%n 

然后你要添加的是

 log4j.appender.LOGFILE.Append=false 

默认值为true

所以,如果你以编程方式声明你的appender,那么你想要做的就是调用setAppend(false)

Matt之前的回答是正确的,除了它使用属性文件。 如果您正在寻找程序化方法,我建议您通过修改代码来禁用追加模式,如下所示:

 logger.addAppender(new FileAppender(new PatternLayout(),"log.txt", **false**)); 

将以下行添加到XML文件中:

  

请注意,由于log4j中的奇数XML解析, 元素必须出现在块中(不与其他类型的元素混合)。

例如,这有效:

        

但这不是(!)