如何在log4net中为每个日志调用添加StackTrace?

时间:2010-04-09 10:08:09

标签: log4net stack-trace

我正在使用Log4Net来记录多层企业应用程序。

我知道当我使用Log4Net记录异常时,它会自动暴露异常StackTrace,但是我想为每个日志调用记录StackTrace,即使这些异常抛出也没有。

为什么我需要那个?... 我想知道日志的调用来源(钻取图层......)

谢谢所有人......

Tiago Dias

2 个答案:

答案 0 :(得分:3)

我找到了解决问题的方法。 我用自己的方法包装了log4net,并创建了LoggingEvent。在每个实例中,我都使用了Environment.StackTrace的属性。

这样我的应用程序中就有了StackTrace foreach日志事件,即使没有例外也被抛弃。

感谢大家..

答案 1 :(得分:1)

您可以使用%location获取调用方法名称和行号,但不能在不扩展log4net的情况下获取整个堆栈跟踪。检查对此问题的回答:

Does log4net support including the call stack in a log message

另请查看apache.org上的PatternLayout文档页面,了解您可以输出的其他位置详细信息:

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

不确定这是否仍然适用于现代计算机,但log4net文档警告生成调用者信息的成本很高。

相关问题