log4j / log4cxx: исключительное отношение 1 к 1 между регистратором и приложением

Использование xml-конфигурации log4cxx (идентичной по конфигурации log4j). Я хочу иметь определенный вывод регистратора исключительно для определенного приложения (чтобы он был единственным регистратором, который выводит на это приложение).

Я обнаружил, что можно привязать регистратор к конкретному приложению следующим образом:

<logger name="LoggerName">
    <level value="info"/>
   <appender-ref ref="AppenderName"/>
</logger>

но этот регистратор по-прежнему выводит в корневое приложение, потому что у меня есть этот стандартный фрагмент в файле conf:

<root>
   <priority value="DEBUG"/>
   <appender-ref ref="OtherAppender"/>
</root>

Как я могу исключить этот регистратор из корневого регистратора? другими словами, как мне настроить журнал таким образом, чтобы все регистраторы наследовали приложения корневого регистратора, кроме определенного регистратора?


person Omry Yadan    schedule 14.04.2010    source источник


Ответы (1)


Для этого вы используете следующую конфигурацию:

<logger name="TRACER" additivity="false">
    <level value="Debug" />
    <appender-ref ref="DebugAppender" />
</logger>

Все регистраторы с именем, начинающимся с TRACER, будут регистрироваться в приложении DebugAppender. Для получения дополнительной информации проверьте здесь или здесь.

Additivity = "false" означает, что сообщения для этого регистратора не будут распространяться вверх по иерархии регистраторов, поэтому он не будет ничего печатать в корневом регистраторе.

person Ronald Wildenberg    schedule 14.04.2010
comment
Я это уже видел и понял, что этого недостаточно. перечитал вопрос, обновил. - person Omry Yadan; 14.04.2010
comment
Ах, вот посложнее, попробую найти решение (если оно есть). - person Ronald Wildenberg; 14.04.2010
comment
ага, понял. аддитивность = ложь на регистраторе. - person Omry Yadan; 14.04.2010