Ответ 1

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

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

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

Ответ 5

ELMAH:

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

Log4Net:

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

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

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

Ответ 6

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

Ответ 7

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