Как добавить StackTrace к каждому вызову журнала в log4net? - PullRequest
4 голосов
/ 09 апреля 2010

Я использую Log4Net для регистрации многослойного корпоративного приложения.

Я знаю, что когда я регистрирую исключение в Log4Net, оно автоматически предоставляет исключение StackTrace, но я хочу регистрировать StackTrace для каждого вызова журнала, даже если это не выбросы исключения.

Зачем мне это нужно? ... Я хочу знать источник вызова журнала (развернуть слои ...)

Спасибо всем ...

Тиаго Диас

Ответы [ 2 ]

3 голосов
/ 09 апреля 2010

Я пришел к решению своей проблемы. Я обернул log4net своими собственными методами и создал экземпляры LoggingEvent. В каждом случае я использовал свойство с Environment.StackTrace.

Таким образом, у меня в приложении есть событие журнала StackTrace foreach, даже без исключений.

Спасибо всем ..

1 голос
/ 09 апреля 2010

Вы можете получить имя метода вызывающей стороны и номер строки, используя% location, но не всю трассировку стека без расширения log4net. Проверьте ответы на этот вопрос:

Поддерживает ли log4net включение стека вызовов в сообщение журнала

Также проверьте страницу документации PatternLayout на apache.org для получения других сведений о местоположении, которые вы можете вывести:

http://logging.apache.org/log4net/release/sdk/log4net.Layout.PatternLayout.html

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

...