Как установить определенные уровни логгера для каждого аппендера в Log4Net - PullRequest
2 голосов
/ 24 июля 2010

Имеется два приложения: A1, A2 и несколько регистраторов, один из которых - L1

. Можно ли настроить log4net таким образом, чтобы:

A1 получал отладку и выше от всех регистраторов за исключением L1, для которого он получает INFO и выше
A2 получает DEBUG и выше от всех регистраторов

Я рассмотрел порог аппендера, фильтры и любую другую комбинацию конфигурации, о которой я могу думать, но ни однойиз них, кажется, выполнить вышеупомянутое.

Ответы [ 2 ]

1 голос
/ 26 июля 2010

Вы можете сделать следующее:

  1. Определите ваши два дополнения (A1, A2) без фильтра
  2. Создайте BufferingForwardingAppender, который перенаправляет на A1 и фильтрует на уровне> = INFO
  3. Создание приложения BufferingForwardingAppender, которое пересылает в A2 (без фильтра или> = DEBUG)
  4. Настройка корневого регистратора для использования вспомогательных устройств A1, A2
  5. Настройте регистратор L1, чтобы он не наследовал дополнения (additivity = false); вместо этого используйте ссылку на два BufferingForwardingAppender

Я не проверял, но не понимаю, почему это не сработает.

0 голосов
/ 24 июля 2010

Согласно документам:

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

Так что, похоже, что-то подобное будет работать (непроверенный псевдокод):

A1
    Level >= INFO:  Accept
    Logger == L1: Deny
    Level >= DEBUG: Accept
    DenyAll

A2
    Level >= DEBUG: Accept
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...