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

发布于 2024-07-23 17:28:48 字数 188 浏览 2 评论 0原文

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


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

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

I have a log file that has the following appender added to it :


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

the thing is, each time I'm running my application, additional logging information gets appended to the same log file. What can I do to overwrite the file each time ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

柏林苍穹下 2024-07-30 17:28:48

如果您在属性文件中像这样声明了一个附加程序:

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)

If you have an appender declared like so in a properties file:

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

Then what you want to add is

log4j.appender.LOGFILE.Append=false

The default value is true.

So, if you are declaring your appenders programmatically, then what you want to do is call setAppend(false).

很酷又爱笑 2024-07-30 17:28:48

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

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

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

例如,这有效:

<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>

Add to your XML file the following line:

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

Note that due to odd XML parsing in log4j, the <param> elements must appear in a block (not intermingled with other types of elements).

For example, this works:

<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>

But this doesn't (!)

<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>
心是晴朗的。 2024-07-30 17:28:48

使用 RollingFileAppender。

Use RollingFileAppender.

欢烬 2024-07-30 17:28:48

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

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

The previous answer by Matt is correct except that it uses a properties file. If you are looking for a programmatic approach, I suggest that you disable append mode by modify your code as follows:

logger.addAppender(new FileAppender(new PatternLayout(),"log.txt", **false**));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文