Как исключить один класс из Log4j Logger / Appender? - PullRequest
27 голосов
/ 11 марта 2011

У меня есть пакет "com.example".Этот пакет состоит из пяти классов.Я хочу записать четыре из этих классов в файл, но исключить пятый класс.

Я мог бы написать четыре регистратора, например, logger name = "com.example.Class1", и добавить один и тот же аппендер ко всем четыремлесорубы.Нет ли более простого способа (давайте подумаем, что у меня 100 вместо 5 классов)?

Есть еще несколько вопросов, подобных этому.Но другие парни просто хотели исключить класс, чтобы войти в этот класс.Это можно решить с помощью флага addivity.Но я думаю, что флаг аддитивности здесь не работает, потому что я не хочу регистрировать пятый класс, но все остальные?!

Надеюсь, кто-нибудь может мне помочь?

Ответы [ 2 ]

30 голосов
/ 11 марта 2011

Просто настройте свой пятый класс на использование ВЫКЛ уровня журнала:

log4j.logger.com.example=INFO, MyAppender
log4j.logger.com.example.FifthClass=OFF

На самом деле я предлагаю вам установить не OFF, а FATAL. ERROR или даже WARN вместо.

Основная причина, по которой нужно игнорировать ведение журнала в каком-либо классе, обычно заключается в том, что он регистрирует слишком много данных (более чем полезно и затрудняет чтение журнала). Тем не менее, в большинстве случаев вам все равно захочется узнать, действительно ли что-то идет 1010 * действительно неправильно. Установив для него значение ERROR, вы все равно сможете увидеть реальные проблемные случаи, но не будете раздражены тоннами INFO записей журнала.

13 голосов
/ 30 июля 2012

(просто ради полного ответа)

Вы можете попробовать сделать это, установив файл log4j.xml. Просто зарегистрируйте весь пакет, как вам нравится, и зарегистрируйте FifthClass по-другому.

<logger name="com.example">
    <level value="INFO"/>
</logger>

<logger name="com.example.FifthClass">
    <level value="FATAL"/>
</logger>
...