Что делать, если Эльмах не может связаться с базой данных для регистрации исключения?

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

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


person ProfK    schedule 02.08.2010    source источник


Ответы (2)


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

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

Вот отличная хорошая статья об Эльмах.

person Stefan Egli    schedule 03.08.2010
comment
Я пришел к такому же выводу намного позже, вчера вечером, задав этот вопрос. Весь доступ к данным осуществляется через одну точку, и в случае сбоя в этой точке запрос прерывается и выполняется перенаправление прямо на страницу с ошибкой, без регистрации. - person ProfK; 03.08.2010
comment
Я бы хотел, чтобы был запасной вариант. - person IsmailS; 28.02.2012

Я выпустил составной журнал ошибок, который посвящен именно этой проблеме.
Вы можете установить его с помощью 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>
person Eric Boumendil    schedule 05.02.2013
comment
Спасибо. Как раз то, что мне нужно. Работает отлично. - person Michael Logutov; 22.01.2015
comment
Майкл, рад помочь. - person Eric Boumendil; 26.01.2015