Java Log4j перезаписывает выходные данные FileAppenders

Я использую Log4j для регистрации выходных данных моего приложения. Файлы log4j.properties содержат следующее:

    log4j.logger.DEFAULT_LOGGER=INFO,main_log, stdout
    log4j.additivity.DEFAULT_LOGGER = false

    # Direct log messages to a log file
    log4j.appender.main_log=org.apache.log4j.FileAppender
    log4j.appender.main_log.File=mainLog.log
    log4j.appender.main_log.layout=org.apache.log4j.PatternLayout
    log4j.appender.main_log.layout.ConversionPattern=%d{yyyy mm dd HH:mm:ss} %5p %c{1}:%L - %m%n

    # Direct log messages to stdout
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target=System.out
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{yyyy mm dd HH:mm:ss} %5p %c{1}:%L - %m%n

В настоящее время происходит следующее. Когда я начинаю свой основной метод, где я вызываю

static Logger log = Logger.getLogger("DEFAULT_LOGGER");
log.fatal("Process Logger");

он печатает вывод в stdout и file.log, что нормально. Но когда я запускаю приложение во второй раз, оно добавляет вывод в существующий файл. Но я хочу перезаписать файл журнала. Это возможно? (Я не хочу использовать Java для удаления, также я не хочу, чтобы удалить его вручную, конечно) Есть ли опция в Log4J, чтобы сообщить регистратору перезаписать или добавить вывод?

2 ответа

Решение

Для этого вам нужно использовать RollingFileAppender.

Проверьте следующие вопросы SO на похожие строки:

Вы можете использовать FileAppender, добавить к нему свойство log4j.appender.fileAppender.Append=false

Другие вопросы по тегам