.net - 如何在 Release模式下记录异常

标签 .net logging exception-handling

在 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/

相关文章:

java - 为什么 String.indexOf 不使用异常而是在找不到子字符串时返回 -1?

android - 使用 ACRA 发送自定义数据而不发送异常本身

.net - 非常简单的企业应用程序架构 - 使其可扩展

.net - "Oh noes!"南希测试异常

java - Maven/Sonar : Enforce usage of slf4j over different logging frameworks

spring - 在 Spring Boot 中的 application.properties 中获取用户主路径

Python日志记录导致延迟?

c# - 在不停止序列的情况下处理 Reactive Extensions 中的异常

c# - 定时信号量

.net - 为什么将设置嵌入到程序集中?