Pull to refresh

Удобный мониторинг ошибок в приложении ASP.NET

Reading time2 min
Views12K
Здравствуйте, уважаемы читатели Хабра. В данном посте я хочу рассказать вам о модуле для мониторинга ошибок в ASP.NET — ELMAH (Error Logging Modules and Handlers).

Для чего это может быть полезным:


Представьте ситуацию, когда у вас есть работающий в Prod режиме сайт с большим количеством юзеров выполняющих разнообразные бизнес задачи. Время от времени некоторые пользователи сообщают о спонтанно возникающих ошибках, которые на Dev окружении воспроизвести не удается. При этом очень трудно бывает понять по описанию юзера что может быть причиной ошибки и при какой комбинации действий она произошла.

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

Сначала хочу показать как внешне выглядит список всех ошибок и детальная информация по каждой из них.

Список всех ошибок:




Детальное описание по каждой ошибке:


(Страница достаточно большая, поэтому вот ссылка)

Как теперь добавить все это к своему сайту:


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

  1. Добавить библиотеку Elmah.dll в проект.
  2. Добавить параметры конфигурация в web.config.

Саму библиотеку вы найдете по ссылке на официальный сайт внизу поста. Далее я опишу минимальные изменения в web.config необходимые для перехватывания и вывода ошибок в лог.
  1. Добавляем параметры в <configSections>:

  2. Добавляем секцию в <httpHandlers>:

  3. Добавляем секцию в <httpModules>:

  4. Также нужно указать, где будут сохраняться ошибки — для этого добавьте секцию в <configuration>:


    Если нужно использовать базу данных вместо файловой системы делаем так:



Готово, теперь все ошибки возникающие на вашем сайте будут доступны на странице: http://server/elmah.axd

Из полезных особенностей еще отмечу:
  1. Поддержка SQL Server, Oracle SQLite, MS Access.
  2. Фильтры нежелательных ошибок (например ошибки аутентификации).
  3. RSS списки ошибок.
  4. Отправка ошибок на Twitter.
  5. Поддержка пользовательских эксепшенов (вы можете вызвать метод библиотеки подав на вход собственный эксепшен и он попадет в общий список ошибок)


Если хочется немного поиграться, вот простенький пример сайта с подключенным Elmah:
tr.im/elmahtest

Тем кто захочет всерьез использовать Elmah рекомендую посетить официальный сайт. Там есть исходники, бинарники и документация: code.google.com/p/elmah
И вот здесь еще есть детальное описание с примерами: dotnetslackers.com/articles/aspnet/ErrorLoggingModulesAndHandlers.aspx

Спасибо за внимание. Надеюсь, для кого-то этот пост будет полезен :)

Tags:
Hubs:
+19
Comments16

Articles

Change theme settings