我正在寻找在ASP.NET应用程序中记录错误的最佳方法.我希望能够在我的应用程序中发生错误时收到电子邮件,其中包含有关异常和当前请求的详细信息.
在我的公司,我们曾经拥有自己的ErrorMailer,捕获Global.asax Application_Error中的所有内容.这是"好的"但不是很灵活也不可配置.
我们最近切换到了NLog.它更具可配置性,我们可以为错误定义不同的目标,过滤它们,缓冲它们(尚未尝试).这是一个非常好的改进.
但我最近发现.Net框架中有一个完整的命名空间用于此目的:System.Web.Management,它可以在web.config 的healthMonitoring部分配置.
您曾经使用.Net健康监测吗?您的错误记录解决方案是什么?
我用elmah.它有一些非常好的功能,这里有一篇CodeProject文章.我认为StackOverflow团队也使用了elmah!
我一直在使用Log4net,配置为发送致命错误的详细信息.它还设置为将所有内容记录到日志文件中,这在尝试调试问题时非常有用.另一个好处是,如果该标准功能没有达到您的要求,那么编写一个可以根据需要处理日志记录信息的自定义appender相当容易.
话虽如此,我正在使用它与自定义错误处理程序一起发送一个html电子邮件,其中包含的信息比标准log4net电子邮件中包含的信息要多 - 页面,会话变量,cookie,http服务器变量等.
这些都在Application_OnError事件中连接,其中异常被记录为log4net中的致命异常(然后将其通过电子邮件发送到指定的电子邮件地址),并且还使用自定义错误处理程序进行处理.
首先从Coding Horror博客文章" Crash Responsibly"中了解到了Elmah,虽然看起来很有希望但我还没有实现任何项目.