2

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

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

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

log4net 是否支持它或者有什么方法可以将它们记录在一起?谢谢你。

4

2 回答 2

7

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

例如:

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
}
于 2013-03-10T12:41:07.310 回答
5

ELMAH是您的朋友 - 您可以将它与 log4net 一起使用。

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

您可以使用 nuget 获得适当的包配置。

于 2013-03-10T12:41:29.473 回答