【问题标题】:ELMAH SQL Error Handler database not available- what happens to logging?ELMAH SQL 错误处理程序数据库不可用 - 日志记录会发生什么?
【发布时间】:2009-04-16 21:15:49
【问题描述】:

我正在测试 ELMAH,并特意在我的应用程序中关闭了 ELMAH 日志的数据库连接,以查看如果数据库不可用在生产中会发生什么。

似乎 ELMAH 无法捕获自己的错误 - 当 SQL 数据库日志失败时,AXD 文件不可用。

如果数据库不可用,ELMAH 的预期行为是什么?

如果发生这种情况,我该如何诊断我的错误?

【问题讨论】:

  • +1 用于在最坏的情况发生之前考虑/测试它们!

标签: database elmah


【解决方案1】:

看来ELMAH不能自己陷进去 错误

ELMAH 确实在某种程度上捕获了自己的错误。如果ErrorLogModule 在尝试记录错误时遇到异常,则记录导致的异常将发送到标准的 .NET Framework 跟踪工具。请参阅line 123 from 1.0 sources. 另请参阅 ASP.NET 文档中的以下演练,以获取标准 .NET Framework 跟踪与 ASP.NET 跟踪一起使用:

Walkthrough: Integrating ASP.NET Tracing with System.Diagnostics Tracing

当 AXD 文件不可用时 SQL 数据库日志失败。

没错。使用SqlErrorLog 时,SQL Server 数据库连接必须能够查看存储在 SQL Server 数据库中的错误。

ELMAH 的预期行为是什么 如果数据库不可用?

例如,如果 SQL Server 数据库已关闭,则在记录期间将出现 SqlException。然后,ELMAH 会将 SqlException 对象内容发送到标准 .NET Framework 跟踪工具。

如果出现这种情况,我该如何诊断我的错误 发生了吗?

这里最好的选择是启用错误记录电子邮件。如果数据库已关闭,则邮件网关很可能已启动,您仍会收到错误通知。实际上,这些错误会在某些邮箱中记录。这还有一个额外的好处,如果邮件网关曾经关闭,那么数据库很可能会启动并且错误会在那里记录。但是,如果两者都出现故障,那么您将需要认真检查您的生产基础架构,并可能采取措施通过其他措施监控系统的运行状况。

【讨论】:

    【解决方案2】:

    不太确定 ELMAH 但此类日志记录框架的预期行为是在出现问题时不会抛出任何异常。 IE。如果 ELMAH 的数据库出现故障,我假设它不会将错误记录到数据库中。

    如上所述,您可以/应该使用替代接收器 - 电子邮件或平面文件。

    【讨论】:

      【解决方案3】:

      您始终可以使用 xml 文件选项来记录您的错误。

      【讨论】:

        【解决方案4】:

        我认为你有点混淆了上下文。

        如果数据库不可用,ELMAH 的行为是不将错误记录到数据库中。如果在服务器上引发异常,或者您通过 ErrorSignal 引发异常,ELMAH 将使该异常通过黄屏或自定义错误页面(您的设置)。

        由于 Errors.axd 页面只有那些应该看到它的人才能访问(理想情况下),所以可以将该错误呈现给用户。

        底线是,如果错误数据库已关闭,您将无法诊断错误。对我们来说,如果是这样的话,我们会遇到更大的问题,因为错误数据库位于生产数据库中。


        我还反对将 XML 日志记录用于您的主要日志记录源。 SQL Server 将为您提供最佳性能,而无需管理文件。对于 XML 日志记录,情况并非如此。

        【讨论】:

        • 在使用 web\bin 目录中的 ELmah.dll 进行调试时,Web 应用程序在其中一个 elmah 源文件(由 elmah.pdb 中的信息指示)中抛出错误无法访问数据库。所以 - 它会抛出一个未处理的异常。在这种情况下,其他 ELMAH 记录器可以工作吗?
        • 我不知道,我从未尝试过故障转移。 Elmah 项目非常可靠,所以我相信他们已经想到了这一点。你只需要挖掘。
        猜你喜欢
        • 2014-10-16
        • 1970-01-01
        • 2011-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多