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

108

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

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

IAdapter
источник
возможный дубликат stackoverflow.com/questions/800009/…
empi
Теперь, когда на картинке изображено ядро ​​.net, изменился ли сценарий? (elmah не поддерживает ядро ​​.net по состоянию на январь 2018 г.).
Chaitanya Gadkari

Ответы:

92

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

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

Марк Коулман
источник
3
log4net дает вам больше контроля.
DarthVader 01
6
Вы можете получить лучшее из обоих миров, используя этот ELMAH Appender для log4net. Просто зарегистрируйте то, что вам нравится (отладка, информация, предупреждение, ошибка) с помощью log4net, но сохраните это в ELMAH nuget.org/packages/elmahappender_log4net_1.2.10
Sturla
111

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

Майк Валенти
источник
23
Одно исправление: у Elmah есть API, с которым разработчик может взаимодействовать. Например, передача сигналов осуществляется через Elmah Api.
Эд ДеГан
8
Еще одна поправка? ELMAH - это .NET HttpModule / HttpHandler. Это НЕ плагин IIS. ARR - это плагин. Не ЭЛЬМА.
Максим Руиллер
Как вы ответите на комментарии?
Питер Мортенсен
36

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

Джейми Иде
источник
1
При правильной настройке ELMAH сразу же собирает массу полезной информации. за то же время вы можете сделать то же самое с log4net с большим контролем.
DarthVader 01
DarthVader - у вас есть образец конфигурации log4net, который делает то же самое?
JasonD
5
ELMAH собирает массу полезной информации прямо из коробки, БЕЗ конфигурации. С дополнительной конфигурацией он будет обрабатывать как необработанные исключения, так и обработанные исключения.
Trevor de Koekkoek
5

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

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

Дастин Дэвис
источник
4

ЭЛЬМА:

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

Log4net:

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

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

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

сгохалес
источник
1

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

Adeel
источник
5
Что это за преимущества? Я скоро займусь ASP.NET, поэтому мне хотелось бы узнать ваше образованное мнение. Я все еще новичок в .NET, поэтому мне сложнее интерпретировать то, что они говорят на своих сайтах.
IAdapter
Вы можете просматривать отчеты даже без написания кода. См. Особенности elmah здесь code.google.com/p/elmah
Adeel
Elmah очень ограничен, и единственное «преимущество» - это отчеты, но оно ограничено веб-приложениями, имеющими доступ к HttpContext. Вы можете использовать данные журналов других регистраторов для многих других источников, о которых можно сообщать.
Дастин Дэвис
0

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

Дин Томас
источник