我正在使用Log4Net来记录多层企业应用程序。
我知道当我使用Log4Net记录异常时,它会自动暴露异常StackTrace,但是我想为每个日志调用记录StackTrace,即使这些异常抛出也没有。
为什么我需要那个?... 我想知道日志的调用来源(钻取图层......)
谢谢所有人......
Tiago Dias
答案 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文档警告生成调用者信息的成本很高。