Это довольно просто, на самом деле.
Сначала добавьте appender в корневой логгер.В самом деле.Это сделает вашу жизнь намного проще.
Теперь настройте все это:
log4j.rootLogger=DEBUG, APPENDER
log4j.logger.com=ERROR
log4j.logger.com.example.MyAgent=DEBUG
По умолчанию для всех классов ниже «com. *» Будет регистрироваться только ошибки.Единственное исключение - com.example.MyAgent
, которое будет регистрировать на уровне отладки.
Вам также необходимо установить для корневого регистратора значение DEBUG
, иначе оно отбросит все сообщения журнала отладки.
Следующим шагом является использование одного регистратора для каждого экземпляра.Чтобы получить это, просто удалите static
в строке, в которой вы создаете свой регистратор, и замените BaseMessagingAgent
на getClass()
Я знаю, это выглядит как перебор, но вот как работает log4j.Кроме того, создание регистратора для каждого экземпляра не очень дорого (если вы не создадите миллионы MyAgent
в секунду).
Если вы действительно хотите добавить аппендер в один класс, не забудьте включитьОтключение аддитивности (...Class.additivity=false
) или вы получите все сообщения журнала дважды.