有没有办法记录ASP.NET页面中发生的任何意外异常?

时间:2013-03-10 12:39:24

标签: c# asp.net logging log4net

我正在使用log4net记录预期的异常,如下所示:

try {
   // some exception occurred
} catch (Exception ex)
{
   log.Error("Exception occurred!", ex);
}

信息将被写入我设置的文件或某个地方。但对于那些不在try ... catch块运行时异常的那些,我怎么能在发生时完全记录它们呢?

log4net是否支持它,或者有没有办法将它们记录在一起?谢谢。

2 个答案:

答案 0 :(得分:7)

您可以订阅Global.asax中的全局Application_Error事件处理程序,其中所有未处理的异常都会冒出来,您可以记录(并可能处理它们)。

例如:

protected void Application_Error()
{
    var exception = Server.GetLastError();
    log.Error("Exception occurred!", exception);

    // TODO: optionally handle the exception here, for example display
    // some custom error page or something
}

答案 1 :(得分:5)

ELMAH是您的朋友 - 您可以使用它with log4net

  

ELMAH(错误记录模块和处理程序)是一个完全可插拔的应用程序范围的错误记录工具。它可以动态添加到正在运行的ASP.NET Web应用程序,甚至是机器上的所有ASP.NET Web应用程序,而无需重新编译或重新部署。

您可以使用nuget配置相应的软件包。