【发布时间】:2013-08-06 17:01:44
【问题描述】:
我正在使用 Log4Net 记录多层企业应用程序。
我知道当我使用 Log4Net 记录异常时,它会自动公开异常 StackTrace,但我想为每个日志调用记录 StackTrace,即使这些不是异常抛出。
我为什么需要那个?... 我想知道日志的调用来源(向下钻取...)
谢谢大家...
蒂亚戈·迪亚斯
【问题讨论】:
标签: log4net stack-trace
我正在使用 Log4Net 记录多层企业应用程序。
我知道当我使用 Log4Net 记录异常时,它会自动公开异常 StackTrace,但我想为每个日志调用记录 StackTrace,即使这些不是异常抛出。
我为什么需要那个?... 我想知道日志的调用来源(向下钻取...)
谢谢大家...
蒂亚戈·迪亚斯
【问题讨论】:
标签: log4net stack-trace
我找到了解决问题的方法。 我已经用我自己的方法包裹了 log4net,并且我已经创建了 LoggingEvent 实例。在每个实例中,我都使用了 Environment.StackTrace 的属性。
这样我的应用程序中就有 StackTrace foreach 日志事件,即使没有抛出异常。
谢谢大家..
【讨论】:
您可以使用 %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 文档警告说生成调用者信息的成本很高。
【讨论】: