Как перезаписать файл журнала в log4j?

У меня есть файл журнала, в который добавлен следующий appender:


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

Дело в том, что каждый раз, когда я запускаю свое приложение, дополнительная информация о регистрации добавляется в тот же файл журнала. Что я могу сделать для перезаписи файла каждый раз?

Ответы

Ответ 1

Используйте RollingFileAppender.

Ответ 2

Если у вас есть приложение, объявленное таким образом в файле свойств:

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

Ответ 3

Предыдущий ответ Мэтта правильный, за исключением того, что он использует файл свойств. Если вы ищете программный подход, я предлагаю отключить режим добавления, изменив код следующим образом:

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

Ответ 4

Добавьте в свой XML файл следующую строку:

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

Обратите внимание, что из-за нечетного разбора XML в log4j элементы <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>