У меня возникают проблемы с дублирующимися сообщениями журнала при записи в несколько файлов журнала с помощью log4j.
В настоящее время я пытаюсь записать данные уровня INFO
(и вверх) для конкретного регистратора с именем foobar в моем foo.log
файле, а затем все сообщения журнала уровня WARN
(и вверх ) для всех регистраторов в файле bar.log
.
В результате этого дубликаты сообщений журнала были записаны в файл foo.log
(каждая строка была записана дважды), и после некоторого быстрого исследования я обнаружил, что предложение исправить это было добавить log4j.additivity.foobar=false
в файл свойств.
Проблема заключается в том, что, хотя он останавливает повторяющиеся строки, сообщение WARN
из регистратора foobar никогда не записывается в файл bar.log
.
Мой файл свойств log4j выглядит следующим образом:
log4j.rootLogger = WARN, FOO, BAR
log4j.logger.foobar = INFO, FOO
log4j.additivity.foobar = false
log4j.appender.FOO = org.apache.log4j.RollingFileAppender
log4j.appender.FOO.layout = org.apache.log4j.PatternLayout
log4j.appender.FOO.layout.ConversionPattern = %d{ISO8601} %-5p %c ~ %m%n
log4j.appender.FOO.File = foo.log
log4j.appender.BAR = org.apache.log4j.RollingFileAppender
log4j.appender.BAR.layout = org.apache.log4j.PatternLayout
log4j.appender.BAR.layout.ConversionPattern = %d{ISO8601} %-5p %c ~ %m%n
log4j.appender.BAR.File = bar.log
Кто-нибудь знает, как я могу записывать сообщения журнала в оба файла журнала (как это делалось до того, как я начал устанавливать свойство additivity
) и все еще предотвращать дублирование сообщений журнала?
Обратите внимание, что это упрощенная сводка проблемы. В сценарии реального мира есть несколько регистраторов и более двух файлов журнала