Зачем использовать ELMAH, если приложение использует NLog

Мне нужно написать централизованную систему ведения журнала.

Основные требования:

  • Исключения журналов, а также другие сведения, если необходимо, в SQL Server DB.
  • Если DB не работает, то есть параметр перехода на другой ресурс - это войти в файл и отправить по электронной почте

Я проделал некоторое чтение и посмотрел, что NLog - лучший вариант, простой и большинство функций, которые мне нужны. Мой план состоит в том, чтобы написать библиотеку классов-оболочек вокруг NLog и использовать мою библиотеку во всех приложениях asp.net, web api, а также в других библиотечных проектах и ​​некоторых классических сайтах asp с использованием COM +.

Но я заметил, что некоторые люди упоминают использование ELMAH для обработки исключений и NLog для диагностики.

Мой вопрос (или я должен сказать путаницу): Почему я должен использовать ELMAH, если я использую NLog?

Или когда использовать ELMAH вместе с NLog?

Или

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

Ответ 1

Elmah используется для обработки исключенных исключений и, как правило, является "последней строкой защиты", чтобы иметь возможность идентифицировать, когда дела идут полностью вверх. Вы можете прочитать, что он предоставляет на своей странице github: http://code.google.com/p/elmah/

NLog и другие (я настоятельно рекомендую Serilog) используются для диагностики и трассировки во время выполнения... То есть, для дампа информации, которую вы либо трассируете, или ведения журнала (который по определению не является неперехваченным исключениями).

NLog, как и log4net, nlog становится довольно длинным в зубе, а в то время как был недавний релиз... предыдущий релиз годом ранее, и я чувствую, что большинство "старых охранных" фреймворков не выросли со временем.

Serilog - гораздо лучший выбор, поскольку он обеспечивает "структурированное ведение журнала", что позволяет, например, искать в определенных полях в файлах журнала.

Ответ 2

Эрик ударил его по голове, почему кто-то будет использовать оба. Тем не менее, ReflectInsight - гораздо лучший выбор для структурированного ведения журнала и исключения исключений. https://insightextensions.codeplex.com