Wednesday, March 17, 2010

Elmah vs Logging

Elmah — это очень полезный инструмент протоколирования ошибок веб-приложения ASP.NET. Часто можно услышать вопрос: что лучше использовать — Elmah или библиотеку логгинга (например, log4net)? Чтобы ответить на этот вопрос, нужно понять какие функции выполняет каждый из эти инструментов. Основные функции Elmah:

   * logging (протоколирование) — логгирование ошибок со всей сопутствующей информацией;
   * reporting (отчетность) — предоставление информации об ошибках пользователю в удобном для чтения виде;
   * notification (уведомление) — уведомление пользователя о случившейся ошибке.

В качестве примера библиотеки логгинга в этом вопросе используется log4net, так что в дальнейшем повествовании понятия «log4net» и «библиотека логгинга» употребляются как синонимы. Итак, основная функция log4net только одна:

   * logging — протоколирование событий, происходящих в приложении;

Из приведенных списков видно, что log4net не обладает многими возможностями Elmah:

   * log4net не решает задачу reporting`а. Библиотека логгинга просто сохраняет протокол событий в определенном хранилище и не заботится об удобном представлении этого протокола пользователю. Доступные средства просмотра логов также не обеспечивают требуемого удобства, потому что они не предназначены для представления веб-специфичных параметров.
   * log4net не решает задачу уведомления пользователя об ошибке. Можно, конечно, использовать appender, отсылающий UDP пакеты или написать свой, но изначально log4net не предназначен для решения таких задач.

Кажется, что log4net отстает по всем пунктам. Но, с другой стороны, Elmah покрывает задачу логгинга не полностью. Ведь в протокол попадают только ошибки, в то время как в приложении может понадобиться следить за логикой последовательной работы нескольких систем и протоколировать множество дополнительной информации. log4net же поддерживает сообщения разных уровней — DEBUG, INFO, WARN, ERROR, FATAL.

Read more: Codehelper

Posted via email from jasper22's posterous