В чем разница между log4net и ELMAH? - PullRequest
107 голосов
/ 20 февраля 2011

Некоторые люди используют ELMAH вместо log4net. Что делает его лучше?

Я узнал об ELMAH в ответе на вопрос переполнения стека Как мне войти в C #?

Ответы [ 7 ]

111 голосов
/ 20 февраля 2011

Log4Net является каркасом регистрации общего назначения с API, предназначенным для использования в вашем приложении (web, console, 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), которые могут отправлять ваши сообщения журнала в такие вещи, как файлы журнала, сервер системного журнала, база данных и т. Д.

90 голосов
/ 20 февраля 2011

ELMAH предназначен для отслеживания ошибок и исключений для ваших веб-приложений и позволяет легко регистрировать или просматривать эти исключения с помощью множества различных механизмов (SQL, RSS, Twitter, файлы, электронная почта и т. Д.). Если у вас нет встроенной обработки исключений, ELMAH, скорее всего, даст вам то, что вы ищете с точки зрения обработки исключений в среде веб-приложений.

Log4net также может использоваться для регистрации исключений, однако вам может потребоваться свернуть собственные обработчики для подключения к веб-приложению. Log4net будет освещать ELMAH, если вам понадобится вести другие виды регистрации информации, так как log4net является каркасом регистрации общего назначения. Log4net также можно использовать практически в любом приложении .NET.

35 голосов
/ 20 февраля 2011

Ключевым отличием является то, что ELMAH регистрирует необработанные исключения приложения; log4net записывает все, что вы говорите, чтобы войти. Вы можете настроить log4net для регистрации необработанных исключений, но ELMAH собирает множество полезной информации из коробки.

5 голосов
/ 20 февраля 2011

ELMAH работает, создавая httpmodule, который подключается к событиям ошибок, а затем ведет журнал.Это может быть легко сорвано и сломано плохим дизайном.Log4Net может потребоваться дополнительная предварительная работа, но если вы используете AOP-фреймворк и применяете его в своем классе или даже сборке, вы можете добиться гораздо лучшей регистрации исключений с очень небольшим кодом и усилиями.

ELMAH работает, только если он имеетдоступ к HttpContext, который может быть трудно достичь в службах WCF.Так что в конечном итоге вы все равно используете som eother logger в WCF.Почему бы не использовать одно универсальное решение?

4 голосов
/ 20 февраля 2011

ELMAH:

  • Веб-приложение

Log4Net:

  • Веб-приложение

  • Приложение для Windows

Дополнительные ссылки: ref_1 ref_2

1 голос
/ 20 февраля 2011

ELMAH специально используется для веб-приложений, а log4net используется как для веб-приложений, так и для приложений Windows. ELMAH имеет гораздо больше преимуществ, чем log4net в веб-приложении.

0 голосов
/ 20 февраля 2011

ELMAH очень мощный, но также очень специфический в том, что он делает. Он выполняет большую часть работы за вас, хотя я считаю, что Log4Net требует вас для обработки ошибок и ведения журнала.

...