Log4j: несколько регистраторов, уровней и дополнений
У меня проблемы с дублированием сообщений журнала при записи в несколько файлов журнала с использованием 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
свойство) и все-таки предотвратить дублирование сообщений журнала?
Обратите внимание, это упрощенное изложение проблемы. В сценарии реального мира есть несколько регистраторов и более двух файлов журналов.