如果Elmah无法访问数据库以记录异常,该怎么办?

时间:2010-08-02 20:30:57

标签: asp.net elmah

好的,显然相关的问题似乎没有直接解决这个问题。 Elmah遇到异常,可能是存储库无法访问数据库,但Elmah也无法访问该数据库。即使他们针对的是不同的服务器,也许是网络问题。

对于像这样的情况,有没有办法为Elmah配置回退日志,例如文本文件,消息队列,电子邮件,短信等?如果是这样,我在哪里开始寻求这样做,现在就删除Elmah源代码。

2 个答案:

答案 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>