ELMAH SQL错误处理程序数据库不可用 - 记录会发生什么?

Cav*_*rob 12 database elmah

我正在测试ELMAH,故意关闭我的应用程序中ELMAH日志的数据库连接,看看如果数据库不可用,将在生产中发生什么.

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

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

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

Ati*_*ziz 12

似乎ELMAH无法捕获自己的错误

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

演练:将ASP.NET跟踪与System.Diagnostics跟踪集成

SQL数据库日志失败时,AXD文件不可用.

那是正确的.SQL Server数据库连接必须能够在使用时查看存储在SQL Server数据库中的错误SqlErrorLog.

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

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

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

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


Ras*_*ack 0

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

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