【问题标题】:How can I handle exceptions caused in Elmah itself?如何处理 Elmah 本身引起的异常?
【发布时间】: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


【解决方案1】:

Elmah 在回退方案中将故障写入服务器上的 Windows 事件日志。这意味着,如果 Elmah 未能在您可能选择的配置选项(即数据库、文件系统或任何自定义选项配置)中写入异常/事件,它将写入运行应用程序的服务器上的 Windows 事件日志.

作为附加说明,在 NLB(负载平衡)环境中,异常将记录在其中一个服务器的 Windows 事件日志中,从该服务器中提供特定请求,而不是所有运行应用程序的服务器)。

【讨论】:

    猜你喜欢
    • 2011-12-05
    • 2018-10-14
    • 1970-01-01
    • 2012-04-13
    • 2014-05-11
    • 2010-10-30
    • 1970-01-01
    • 2010-09-10
    • 2014-10-28
    相关资源
    最近更新 更多