Log4net: контекст журнала только для исключения

Я ищу способ собрать набор данных, который будет использоваться только для отладки. То есть данные должны регистрироваться только в том случае, если я регистрирую исключение. Когда я получаю аргумент исключения с ILog.Error, Fatal или Debug, я хочу зарегистрировать дополнительную информацию. При регистрации других данных, за исключением исключения, дополнительная информация не должна регистрироваться.

Я планирую использовать GlobalContext или ThreadContext для создания набора данных.

Моя идея заключалась в том, чтобы подключиться к Log4Net и присоединиться к событию, которое я мог бы представить, чтобы изменить шаблон сообщения, чтобы включить контексты, но я не могу найти ни одного события, которое могло бы мне помочь. Может, есть способ попроще?

Что вы думаете об этом в целом? Я на правильном пути или что-то упускаю?

Если это хороший способ, как я могу его реализовать?


person Karsten    schedule 18.06.2009    source источник


Ответы (1)


Подкрепление и изменение шаблона кажется не совсем правильным. Я бы посоветовал посмотреть на фильтрующий материал. Итак, вы должны настроить приложение «ForMessagesWithExceptionsOnly», которое использует фильтр MessagesWithExceptionOnly. Этот аппендер, конечно, будет обрабатывать только сообщения, содержащие исключение.

Чтобы реализовать фильтр MessagesWithExceptionOnly, просмотрите FilterSkeleton.

person Peter Lillevold    schedule 19.06.2009
comment
Я не совсем понимаю. Вы хотите создать два приложения с разными шаблонами макета: один для печати свойства контекста, а другой просто для печати сообщения. Создайте два фильтра: один принимает только события с исключениями, а другой - запрещает. А затем добавить фильтр в соответствующий аппендер? Это кажется немного громоздким. - person Karsten; 22.06.2009
comment
Точно. За исключением того, что вам не нужно создавать два класса фильтров, вы можете повторно использовать один и тот же фильтр в обоих приложениях и иметь только инвертированные настройки AcceptOnMatch для двух. Возможно, немного больше конфигурации, но я гораздо более чистый подход. Я также подозреваю, что изменение шаблонов во время выполнения может повлиять на производительность. - person Peter Lillevold; 23.06.2009