Подтвердить что ты не робот

Как исключить один класс из Log4j Logger/Appender?

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

(Только ради полного ответа)

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

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

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