为什么 log4net 不记录我的堆栈跟踪?



使用的首选形式

_log.Error("Message", exception)

不记录我的堆栈跟踪。为了解决这个问题,我必须确保.ToString()通过执行以下操作对异常进行调用。

_log.Error("Message" + exception);

但我知道这是错误的,只是我无法使正确的版本发挥作用。我的log4net.xml文件中是否需要一个特殊的行才能使其工作?

我想提供我的最终答案,仅供参考。我已经用我对SO问题的回答为log4net实现了一个异步appender方案。我如何为log4net创建一个异步包装器?

我在回复中指出,您需要小心FixFlags,因为任何不在FixFlags中的内容都会从原始日志事件中删除。不幸的是,我没有将FixFlags.Exception添加到我的原始解决方案中,所以在转发过程中生成的任何异常都会被删除。

从更改我的FixFlags

loggingEvent.Fix = FixFlags.ThreadName;

loggingEvent.Fix = FixFlags.ThreadName | FixFlags.Exception;

修复了此问题。

最新更新