如何使用Log4NET记录内部异常?
这是我目前的转换模式:
<conversionPattern value="%date [%appdomain] %-5level %logger [%property{NDC}] - %message%newline" />
答案 0 :(得分:11)
Console和File Appender会自动打印异常。例外:消息,堆栈跟踪和所有内部异常(再次使用堆栈跟踪)记录在单独的行上,并且不遵循转换模式。
我甚至不确定你是否可以配置log4net来打印它。
更新的 可以将appender配置为不打印stacktrace: Log4Net - Logging out the Exception stacktrace only for certain files
答案 1 :(得分:10)
%例外
日志条目中异常对象的格式化形式,如果条目包含异常;否则,此格式表达式不会向日志条目添加任何内容
参考:http://www.beefycode.com/post/Log4Net-Tutorial-pt-4-Layouts-and-Patterns.aspx
我相信你的异常将包含内部异常:
编辑:使用ILog.Error()方法而不是ILog.ErrorFormat()。根据{{3}},ErrorFormat()不会将Exception对象包含在日志事件中
答案 2 :(得分:2)
经过一些快速的谷歌搜索后,我找到了其他人a similar problem。 FreddyGómez的解决方案是:
您可以实现渲染器(类 它实现了接口 IObjectRenderer)您的例外情况 并提供您想要的信息 例外。然后,你只需要 添加一个元素 到配置文件。
答案 3 :(得分:-1)
只是设法在Log4Net 2.0版的源代码中验证这一点,我可以看到没有考虑记录InnerException。这是Log4Net(版本2)的当前限制,它不支持开箱即用的InnerException渲染。这就是为什么你会开始使用NLog,因为它内置了对InnerException渲染的支持 - link