Ведение журнала InnerException с использованием Log4Net - PullRequest
11 голосов
/ 09 марта 2010

Как мне зарегистрировать внутреннее исключение в Log4NET?

Это мой текущий шаблон конвертации:

<conversionPattern value="%date [%appdomain] %-5level %logger [%property{NDC}] - %message%newline" />

Ответы [ 3 ]

11 голосов
/ 09 марта 2010

Console и File Appenders автоматически распечатывают исключение. Исключение: сообщение, трассировка стека и все внутренние исключения (также с трассировкой стека) регистрируются в отдельных строках и не соответствуют шаблону преобразования.

Я даже не уверен, что вы можете настроить log4net так, чтобы он не печатался.

Обновление: Можно настроить appender, чтобы он не печатал трассировку стека: Log4Net - выход из трассировки стека исключений только для определенных файлов

10 голосов
/ 09 марта 2010

% исключение

форматированная форма объекта исключения в записи журнала, если запись содержит исключение; в противном случае это выражение формата ничего не добавляет к записи журнала

Ссылка: http://www.beefycode.com/post/Log4Net-Tutorial-pt-4-Layouts-and-Patterns.aspx

Я полагаю, что ваше исключение будет содержать внутреннее исключение:

Редактировать: использовать метод ILog.Error () вместо ILog.ErrorFormat (). Согласно документации , ErrorFormat () не принимает объект Exception для включения в событие журнала

0 голосов
/ 07 июня 2016

Только что удалось проверить это в исходном коде для Log4Net версии 2.0, и я вижу, что не учитывается регистрация InnerException. Это текущее ограничение Log4Net (версия 2), заключающееся в том, что он не поддерживает рендеринг InnerException из коробки. Вот почему вы начинаете использовать NLog, поскольку он имеет встроенную поддержку рендеринга InnerException - ссылка

...