如何在发布模式下记录异常

时间:2009-06-03 22:24:41

标签: .net logging exception-handling

在发布模式下部署.net程序集时,未启用堆栈跟踪。因此,我们无法从异常中获取堆栈跟踪并将其记录在生产环境中。

为了知道生产代码中发生异常的位置并记录它,我们使用weird approach我不熟悉但是我无法找到一个更好的解决方案来记录发生异常的确切方法第一名。

请注意,日志记录机制也用于确定错误。因此,当引发NullReferenceException或IndexOutOfBoundsException时,仅获取异常类型和消息没有帮助,我们经常需要知道异常发生的确切位置。

你是如何处理的?发生异常时,您会在生产代码上记录哪些信息?如何通过该信息确定问题所在?

3 个答案:

答案 0 :(得分:2)

查看ELMAH,我自己没有实现它,但它似乎得到了一些关注。

http://www.hanselman.com/blog/ELMAHErrorLoggingModulesAndHandlersForASPNETAndMVCToo.aspx

将ELMAH放入正在运行的Web应用程序并进行适当配置后,您将获得以下设施而无需更改一行代码:

  • 记录几乎所有未处理的例外情况。
  • 远程查看已重新编码的例外日志的网页。
  • 用于远程查看任何一个已记录异常的完整详细信息的网页。
  • 在许多情况下,即使关闭了customErrors模式,您也可以查看ASP.NET为特定异常生成的原始黄色死亡屏幕。
  • 发生时每个错误的电子邮件通知。
  • 日志中最近15个错误的RSS提要。
  • 日志的许多后备存储实现,包括内存,Microsoft SQL Server和社区贡献的一些实现。

答案 1 :(得分:1)

我们在发布代码的堆栈跟踪时没有问题,但是我们总是随着我们的版本发布.pdb文件。如果没有pdb,您将始终受限于程序集本身中包含的符号信息,对于处于发布模式的程序集,它将不会很多。

答案 2 :(得分:0)

我们所有的发布代码都有堆栈跟踪。我们唯一缺少的是行号,因为它们来自.pdb。你在运行混淆器吗?