Что делать, если Elmah не может связаться с базой данных для регистрации исключения? - PullRequest
4 голосов
/ 03 августа 2010

ОК, по-видимому, связанные с этим вопросы, похоже, не касаются этого напрямую. Исключение достигает Elmah, возможно, хранилище не может достичь базы данных, но тогда Elmah также не может достичь этой базы данных. Даже если они нацелены на разные серверы, возможно, это проблема с сетью.

Есть ли способ настроить резервные журналы для Elmah для таких случаев, как, например, текстовый файл, очередь сообщений, электронная почта, смс и т. д.? Если да, то где мне начать искать это, исключите пока исходный код Elmah.

Ответы [ 2 ]

4 голосов
/ 03 августа 2010

Меня обычно это не беспокоит: если БД не запущена, значит, мое приложение не запущено, и у меня все равно нет исключений для входа Но если это проблема для вас, вы можете использовать XmlFileErrorLog.

Насколько я могу судить, вы не можете использовать более одного места назначения журнала, и нет ничего лучше, чем запасной вариант. Однако вы можете настроить уведомления по электронной почте, но тогда вы также получите все исключения по электронной почте.

Вот довольно хорошая статья об Эльме.

3 голосов
/ 05 февраля 2013

Я выпустил составной журнал ошибок, который решает именно эту проблему.
Вы можете установить его через Nuget или скопировать из источников в свои проекты.

Базовое использование из конфигурационного файла:

<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>
...