В чем разница между log4net и ELMAH?


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

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

7 105

7 ответов:

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

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

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

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

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

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

ELMAH:

  • веб-приложения

такой как log4net:

  • веб-приложения

  • приложение Windows

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

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

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