我正在使用log4net记录预期的异常,如下所示:
try {
// some exception occurred
} catch (Exception ex)
{
log.Error("Exception occurred!", ex);
}
信息将被写入我设置的文件或某个地方。但对于那些不在try ... catch块运行时异常的那些,我怎么能在发生时完全记录它们呢?
log4net是否支持它,或者有没有办法将它们记录在一起?谢谢。
答案 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配置相应的软件包。