使用首选形式

_log.Error("Message", exception)

不记录我的堆栈跟踪。为了解决这个问题,我必须通过执行以下操作来确保.ToString()被异常调用。
_log.Error("Message" + exception);

但是我知道那是错误的,只有我不能使正确的版本正常工作。我需要在log4net.xml文件中使用特殊行来使其工作吗?

最佳答案

我想提供最终答案,仅供参考。我已经使用对SO问题How do I create an asynchronous wrapper for log4net?的答案为log4net实现了一个异步追加程序方案

我在答复中指出,您需要注意FixFlags,因为FixFlags中没有的所有内容都会从原始日志记录事件中删除。不幸的是,我没有在原始解决方案中添加FixFlags.Exception,因此在转发过程中会丢弃所有生成的异常。

从更改我的FixFlags

loggingEvent.Fix = FixFlags.ThreadName;


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

解决了该问题。

10-08 04:58