Некоторые люди используют ELMAH вместо log4net. Что делает его лучше?
Я узнал об ELMAH в ответе на вопрос о переполнении стека. Как выполнить регистрацию на С#?
Некоторые люди используют ELMAH вместо log4net. Что делает его лучше?
Я узнал об ELMAH в ответе на вопрос о переполнении стека. Как выполнить регистрацию на С#?
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), которые могут отправлять ваши сообщения журнала таким вещам, как файлы журналов, сервер syslog, база данных и т.д.
Основное различие заключается в том, что ELMAH регистрирует необработанные исключения приложений; log4net регистрирует все, что вы скажете, чтобы регистрироваться. Вы можете настроить log4net для регистрации необработанных исключений, но ELMAH захватывает множество полезной информации из коробки.
ELMAH работает, создавая httpmodule, который перехватывает события ошибки, а затем регистрирует. Это может быть легко сорвано и сломано плохим дизайном. Log4Net может потребовать дополнительной работы, но если вы используете инфраструктуру AOP и применяете ее по своему классу или даже к сборке, вы можете добиться гораздо лучшего ведения журнала регистрации с очень небольшим количеством кода и усилий.
ELMAH работает только в том случае, если он имеет доступ к HttpContext, чего трудно достичь в службах WCF. Таким образом, в любом случае вы в конечном итоге будете использовать somger logger в WCF. Почему бы просто не использовать одно универсальное решение.
ELMAH:
Log4Net:
Веб-приложение
Приложение Windows
ELMAH специально используется для веб-приложений, а log4net используется как в веб-приложениях, так и в Windows. ELMAH имеет гораздо больше преимуществ, чем log4net в веб-приложении.
ELMAH очень мощный, но также очень специфический в том, что он делает. Он много работает для вас, хотя я считаю, что Log4Net требует от вас обработки ошибок и регистрации.