Здравствуйте, уважаемы читатели Хабра. В данном посте я хочу рассказать вам о модуле для мониторинга ошибок в ASP.NET — ELMAH (Error Logging Modules and Handlers).
Представьте ситуацию, когда у вас есть работающий в Prod режиме сайт с большим количеством юзеров выполняющих разнообразные бизнес задачи. Время от времени некоторые пользователи сообщают о спонтанно возникающих ошибках, которые на Dev окружении воспроизвести не удается. При этом очень трудно бывает понять по описанию юзера что может быть причиной ошибки и при какой комбинации действий она произошла.
В данной ситуации было бы удобно чтобы при возникновении ошибки, детали о ней автоматически сохранялись на файловой системе или в базе данных. Дабы позже придя на работу мы могли открыть лог и просмотреть весь список эксепшенов со стектрейсом и прочей полезной информацией. Elmah как раз предоставляет такую функциональность.
Сначала хочу показать как внешне выглядит список всех ошибок и детальная информация по каждой из них.
(Страница достаточно большая, поэтому вот ссылка)
Благодаря dependency injection вы можете очень просто подключить весь функционал к уже работающему сайту без необходимости его модифицировать. Для этого надо:
Саму библиотеку вы найдете по ссылке на официальный сайт внизу поста. Далее я опишу минимальные изменения в web.config необходимые для перехватывания и вывода ошибок в лог.
Готово, теперь все ошибки возникающие на вашем сайте будут доступны на странице: http://server/elmah.axd
Из полезных особенностей еще отмечу:
Если хочется немного поиграться, вот простенький пример сайта с подключенным Elmah:
tr.im/elmahtest
Тем кто захочет всерьез использовать Elmah рекомендую посетить официальный сайт. Там есть исходники, бинарники и документация: code.google.com/p/elmah
И вот здесь еще есть детальное описание с примерами: dotnetslackers.com/articles/aspnet/ErrorLoggingModulesAndHandlers.aspx
Спасибо за внимание. Надеюсь, для кого-то этот пост будет полезен :)
Для чего это может быть полезным:
Представьте ситуацию, когда у вас есть работающий в Prod режиме сайт с большим количеством юзеров выполняющих разнообразные бизнес задачи. Время от времени некоторые пользователи сообщают о спонтанно возникающих ошибках, которые на Dev окружении воспроизвести не удается. При этом очень трудно бывает понять по описанию юзера что может быть причиной ошибки и при какой комбинации действий она произошла.
В данной ситуации было бы удобно чтобы при возникновении ошибки, детали о ней автоматически сохранялись на файловой системе или в базе данных. Дабы позже придя на работу мы могли открыть лог и просмотреть весь список эксепшенов со стектрейсом и прочей полезной информацией. Elmah как раз предоставляет такую функциональность.
Сначала хочу показать как внешне выглядит список всех ошибок и детальная информация по каждой из них.
Список всех ошибок:
Детальное описание по каждой ошибке:
(Страница достаточно большая, поэтому вот ссылка)
Как теперь добавить все это к своему сайту:
Благодаря dependency injection вы можете очень просто подключить весь функционал к уже работающему сайту без необходимости его модифицировать. Для этого надо:
- Добавить библиотеку Elmah.dll в проект.
- Добавить параметры конфигурация в web.config.
Саму библиотеку вы найдете по ссылке на официальный сайт внизу поста. Далее я опишу минимальные изменения в web.config необходимые для перехватывания и вывода ошибок в лог.
- Добавляем параметры в <configSections>:
- Добавляем секцию в <httpHandlers>:
- Добавляем секцию в <httpModules>:
- Также нужно указать, где будут сохраняться ошибки — для этого добавьте секцию в <configuration>:
Если нужно использовать базу данных вместо файловой системы делаем так:
Готово, теперь все ошибки возникающие на вашем сайте будут доступны на странице: http://server/elmah.axd
Из полезных особенностей еще отмечу:
- Поддержка SQL Server, Oracle SQLite, MS Access.
- Фильтры нежелательных ошибок (например ошибки аутентификации).
- RSS списки ошибок.
- Отправка ошибок на Twitter.
- Поддержка пользовательских эксепшенов (вы можете вызвать метод библиотеки подав на вход собственный эксепшен и он попадет в общий список ошибок)
Если хочется немного поиграться, вот простенький пример сайта с подключенным Elmah:
tr.im/elmahtest
Тем кто захочет всерьез использовать Elmah рекомендую посетить официальный сайт. Там есть исходники, бинарники и документация: code.google.com/p/elmah
И вот здесь еще есть детальное описание с примерами: dotnetslackers.com/articles/aspnet/ErrorLoggingModulesAndHandlers.aspx
Спасибо за внимание. Надеюсь, для кого-то этот пост будет полезен :)