好的,显然相关的问题似乎没有直接解决这个问题。 Elmah遇到异常,可能是存储库无法访问数据库,但Elmah也无法访问该数据库。即使他们针对的是不同的服务器,也许是网络问题。
对于像这样的情况,有没有办法为Elmah配置回退日志,例如文本文件,消息队列,电子邮件,短信等?如果是这样,我在哪里开始寻求这样做,现在就删除Elmah源代码。
答案 0 :(得分:4)
我通常不那么担心:如果数据库没有运行,那么我的应用程序没有运行,我也没有例外记录。但如果这对您来说是一个问题,那么您可以考虑使用XmlFileErrorLog
。
据我所知,你不能使用超过一个日志目的地,没有什么比回退更好。但是,您可以配置电子邮件通知,但之后您也可以通过电子邮件获得所有例外情况。
这是关于elmah的nice article。
答案 1 :(得分:3)
我发布了一个复合错误日志,正好解决了这个问题 您可以通过Nuget安装或将其从sources复制到您的项目中。
配置文件的基本用法:
<configuration>
<configSections>
<sectionGroup name="elmah">
<section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
<section name="errorLog" requirePermission="false" type="Elmah.FallbackErrorLogSectionHandler, Elmah.FallbackErrorLog" />
<section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
<section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
</sectionGroup>
</configSections>
<elmah>
<errorLog type="Elmah.FallbackErrorLog, Elmah.FallbackErrorLog" >
<add type="Elmah.SqlErrorLog, Elmah" connectionStringName="DB_ELMAH" applicationName="Blog" />
<add type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data/Logs" />
<add type="Elmah.MemoryErrorLog, Elmah" size="30" />
</errorLog>
</elmah>
</configuration>