21

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


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

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

4

4 回答 4

39

如果您在属性文件中有这样声明的附加程序:

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

因此,如果您以编程方式声明附加程序,那么您要做的就是调用setAppend(false).

于 2009-06-08T20:59:18.627 回答
7

在您的 XML 文件中添加以下行:

<param name="Append" value="false" />

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

例如,这有效:

<appender name="appender-log" class="org.apache.log4j.FileAppender">
<param name="File" value="efoimporter.log" />
<param name="Append" value="false" />
<layout class="org.apache.log4j.PatternLayout">
  <param name="ConversionPattern" value="%m%n" />
</layout>
</appender>

但这不(!)

<appender name="appender-log" class="org.apache.log4j.FileAppender">
<param name="File" value="efoimporter.log" />
<layout class="org.apache.log4j.PatternLayout">
  <param name="ConversionPattern" value="%m%n" />
</layout>
<param name="Append" value="false" />
</appender>
于 2012-09-12T10:31:23.790 回答
6

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

logger.addAppender(new FileAppender(new PatternLayout(),"log.txt", **false**));
于 2009-06-09T09:28:32.917 回答
6

使用 RollingFileAppender。

于 2009-06-08T15:53:31.403 回答