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

似乎ELMAH不能捕获它自己的错误 - 当SQL DATABSE日志失败AXD文件不可用。

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

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

有帮助吗?

解决方案

这样的日志框架没有真正把握ELMAH但预期的行为是如果出现问题他们不抛出任何异常。即如果ELMAH的数据库的话我会认为它只是无法登录的错误数据库。

如上面所建议可以/应当使用替代水槽 - 电子邮件或平面文件

其他提示

  

似乎ELMAH不能捕获它自己   错误

ELMAH确实陷阱其自己的错误在一定程度上。如果在尝试登录的错误,那么伐木造成的异常被发送到标准的.NET Framework跟踪设施的ErrorLogModule遇到异常。请参阅线123 1.0 。源参见用于获取标准.NET框架跟踪使用ASP.NET跟踪从ASP.NET文档以下步行通过:

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

  

的AXD文件不可用时   SQL DATABSE日志失败。

这是正确的。 SQL Server数据库的连接必须是功能性,以查看使用SqlErrorLog当存储在SQL Server数据库的错误。

  

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

如果,例如,SQL Server数据库是下来,将记录期间发生SqlException。然后ELMAH将发送SqlException对象内容提供给标准的.NET Framework跟踪工具。

  

如何诊断是否这是我的错误   发生?

在这里最好的选择是也启用日志记录的的错误的电子邮件发送。如果数据库已关闭,有很好的机会在邮件网关是了,你仍然会得到通知的错误。在一些邮箱(ES)的错误会在效果上获得的登录的。这也有额外的好处,如果邮件网关是有史以来下来,然后有机会,该数据库将达到和错误将记录到日志中出现。如果两者都下降,但是,那么你就需要认真检讨你的生产基础设施,并有可能采取措施,通过额外措施,监视系统的健康。

您可以随时使用XML文件选项来记录你的错误。

我想你混淆上下文一点。

如果该数据库不可用ELMAH的行为是不错误记录到数据库中。如果抛出一个异常的服务器上,或者如果您通过ErrorSignal引发异常,ELMAH打算让这种异常传递到任何一个黄色屏幕或自定义错误页(您的设置。)

由于Errors.axd页时,才可访问那些应该看到它(理想地,)它是好的以呈现错误给用户。

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


我也主张反对使用XML日志记录您的主要记录来源。 SQL服务器要给你最好的性能,而不必管理文件。用XML日志记录是并非如此。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top