【发布时间】:2018-08-25 07:00:19
【问题描述】:
我已为 ASP.NET MVC 5 项目设置 Elmah 来处理异常并将它们保存在数据库 (Oracle) 中。
现在我遇到了 Elmah 无法在数据库中记录异常并自行导致异常的情况,因为数据库已关闭、连接字符串更改等。
我试过了:
try
{
Elmah.ErrorSignal.FromCurrentContext().Raise(new Exception("Testing Elmah exception handling"));
} catch (Exception ex)
{
LogException(ex);
}
但永远不会执行 LogException(ex)。
在 LogException 中,我实现了一个自定义记录器,它也写入数据库。
【问题讨论】:
-
理想情况下,您应该在 Windows 事件日志中记录 elmah 故障。这意味着,如果 Elmah 无法写入数据库,那么它应该在服务器的 Windows 日志中记录 elmah 异常。这只是一个备用方案。
-
@Nirman 感谢您指出 Windows 事件日志。似乎当 Elmah 有内部异常时,它们会自动写入 Windows 事件日志并且不会引发异常。这就是我的 catch 块根本没有被命中的原因。
-
很高兴,它帮助您找到了方向。我认为您可能需要在 Windows Log 中显式写入它,但默认情况下已完成。
标签: asp.net-mvc error-handling elmah