log4NET如何知道触发日志事件的行数#

时间:2010-11-07 13:21:38

标签: log4net

我很好奇log4NET如何使用%L来获取触发日志事件的行#。你能给我一些阐述吗?

感谢。

1 个答案:

答案 0 :(得分:3)

它使用了the log4net documentation中描述的StackTrace。

请注意lognet文档中的警告:

  • 警告生成来电者位置信息非常慢。除非执行速度不是问题,否则应避免使用它。

  • 注意
    System.Diagnostics.StackTrace类有关于发布版本的说法:

    “使用Debug构建配置,StackTrace信息将提供最多信息。默认情况下,Debug构建包含调试符号,而Release版本则不包含。调试符号包含大部分文件,方法名称,行号和列信息。构造StackFrame和StackTrace对象。由于优化期间发生的代码转换,StackTrace可能不会报告与预期一样多的方法调用。“

    这意味着在发布版本中,来电者信息可能不完整或根本不存在!因此,在发布版本中不能依赖调用者位置信息。