Как перезаписать файл журнала в log4j?
У меня есть файл журнала, в который добавлен следующий appender:
logger.addAppender(new FileAppender(new PatternLayout(),"log.txt"));
Дело в том, что каждый раз, когда я запускаю свое приложение, дополнительная информация журнала добавляется в тот же файл журнала. Что я могу сделать, чтобы перезаписать файл каждый раз?
4 ответа
Если у вас есть заявитель, объявленный так в файле свойств:
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)
,
Добавьте в ваш 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>
Предыдущий ответ Мэтта правильный, за исключением того, что он использует файл свойств. Если вы ищете программный подход, я предлагаю вам отключить режим добавления, изменив код следующим образом:
logger.addAppender(new FileAppender(new PatternLayout(),"log.txt", **false**));