在 Release模式下部署 .net 程序集时,不会启用堆栈跟踪。所以我们无法从异常中获取堆栈跟踪并将其记录在生产环境中。
为了了解生产代码中发生异常的位置并将其记录下来,我们使用 weird approach我对此感到不舒服,但我想不出一个更好的解决方案来记录首先发生异常的确切方法。
请注意,日志记录机制也用于确定错误。因此,当 NullReferenceException 或 IndexOutOfBoundsException 被抛出时,仅获取异常类型和消息是没有帮助的,我们通常需要知道异常发生的确切位置。
你如何处理这个问题?发生异常时,您会在生产代码上记录哪些信息,您如何根据这些信息确定问题所在?
最佳答案
查看 ELMAH,我自己还没有实现它,但它似乎受到了一些关注。
http://www.hanselman.com/blog/ELMAHErrorLoggingModulesAndHandlersForASPNETAndMVCToo.aspx
将 ELMAH 放入正在运行的 Web 应用程序并进行适当配置后,您无需更改一行代码即可获得以下便利:
- 记录几乎所有未处理的异常。
- 一个网页,用于远程查看重新编码的异常的整个日志。
- 一个网页,用于远程查看任何一个已记录异常的完整详细信息。
- 在许多情况下,您可以查看 ASP.NET 为给定异常生成的原始蓝屏死机,即使 customErrors 模式已关闭。
- 每个错误发生时的电子邮件通知。
- 日志中最近 15 个错误的 RSS 提要。
- 许多日志的后备存储实现,包括内存、Microsoft SQL Server 和社区贡献的几个。
关于.net - 如何在 Release模式下记录异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/947580/