Некоторые люди используют ELMAH вместо log4net. Что делает его лучше?
Я узнал об ELMAH в ответе на вопрос о переполнении стека. Как мне войти в C #?
Некоторые люди используют ELMAH вместо log4net. Что делает его лучше?
Я узнал об ELMAH в ответе на вопрос о переполнении стека. Как мне войти в C #?
Ответы:
ELMAH служит для отслеживания ошибок и исключений для ваших веб-приложений и позволяет вам легко регистрировать или просматривать эти исключения с помощью множества различных механизмов (SQL, RSS, Twitter, файлы, электронная почта и т. Д.). Если у вас нет встроенной обработки исключений, ELMAH, скорее всего, даст вам то, что вы ищете с точки зрения обработки исключений в среде веб-приложения.
Log4net также можно использовать для регистрации исключений, однако вам может потребоваться развернуть собственные обработчики для подключения к вашему веб-приложению. Log4net будет сиять над ELMAH, если вам нужно делать другие типы регистрации информации, поскольку log4net - это среда ведения журнала общего назначения. Log4net также можно использовать практически в любом приложении .NET.
Log4Net - это универсальная среда ведения журналов с API, предназначенная для использования в вашем приложении (веб, консоль, dll и т. Д.).
logger.Debug("Some low level debug message...");
logger.Info("Some basic info");
logger.Warn("Some business logic problem, but not critical");
logger.Error("An unexpected error");
ELMAH - ненавязчивый плагин IIS, специально предназначенный для регистрации исключений в веб-приложении. Вы не увидите ссылки на ELMAH в своем приложении, у него нет API, с которым вы взаимодействуете. Он использует точки расширения IIS модуля и обработчика для фиксации поведения. Кроме того, у него есть веб-интерфейс для просмотра ошибок, возникших в вашем веб-приложении. Log4Net не имеет внешнего интерфейса, только множество приемников журнала (Appenders), которые могут отправлять сообщения журнала в такие вещи, как файлы журнала, сервер системного журнала, база данных и т. Д.
Ключевое отличие состоит в том, что ELMAH регистрирует необработанные исключения приложений; log4net записывает все, что вы ему указываете. Вы можете настроить log4net для регистрации необработанных исключений, но ELMAH сразу же собирает массу полезной информации.
ELMAH работает, создавая HTTP-модуль, который перехватывает события ошибок, а затем ведет журнал. Этому можно легко помешать и сломать плохой дизайн. Log4Net может потребовать дополнительной работы заранее, но если вы используете структуру АОП и применяете ее в своем классе или даже сборке, вы можете добиться гораздо лучшего ведения журнала исключений с очень небольшим кодом и усилиями.
ELMAH работает только в том случае, если у него есть доступ к HttpContext, что может быть трудно достичь в службах WCF. Так что вы все равно будете использовать какой-нибудь другой регистратор в WCF. Почему бы просто не использовать одно более универсальное решение.
ELMAH специально используется для веб-приложений, тогда как log4net используется как в веб-приложениях, так и в приложениях Windows. ELMAH имеет гораздо больше преимуществ, чем log4net в веб-приложении.