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 свойство) и все-таки предотвратить дублирование сообщений журнала?

Обратите внимание, это упрощенное изложение проблемы. В сценарии реального мира есть несколько регистраторов и более двух файлов журналов.

Ответы на вопрос(1)

Ваш ответ на вопрос