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

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

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

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

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

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

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

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

Or

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


person gbs    schedule 23.02.2015    source источник


Ответы (2)


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

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

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

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

person Erik Funkenbusch    schedule 23.02.2015
comment
Но скажем, если в application_error в global.asax, я использую NLog для регистрации ошибки. Будет ли это считаться эквивалентным обработке неперехваченных исключений - person gbs; 23.02.2015
comment
@gbs - нет, потому что Elmah обрабатывает вещи на уровне обработчика HTTP IIS, который находится дальше по цепочке. Кроме того, он также предоставляет удобную веб-программу просмотра событий, которую nlog не предоставляет. - person Erik Funkenbusch; 23.02.2015
comment
Хорошо ... но я думаю, что он по-прежнему будет обрабатывать событие Error в этих модулях. Придется взглянуть на сам код. Вы правы, что веб-просмотрщик - это определенно то, чего нет в NLog. - person gbs; 23.02.2015
comment
@ErikFunkenbusch Nlog также обеспечивает структурированное ведение журнала, а также может регистрировать исключения. Вам просто нужна ссылка на регистратор в Application_Error. Так каковы аргументы в пользу Эльмы? - person MSD561; 21.02.2019
comment
@ MSD561 - Да, вы можете регистрировать исключения с помощью любого фреймворка. Вся цель Elmah состоит в том, чтобы сделать это, и предоставляет программу просмотра журналов. Вы можете делать все, что захотите, с любым фреймворком, что использовать - это ваш выбор. - person Erik Funkenbusch; 21.02.2019
comment
Решение @ErikFunkenbusch Elmah, похоже, предназначено для небольших проектов. В сегодняшней корпоративной среде существует острая потребность в централизованном ведении журнала с такими решениями, как Stackify. - person MSD561; 04.03.2019
comment
@ MSD561 Безусловно, Stackify и другие, подобные Instana, являются отличными продуктами, но также очень дорогими (если у вас много хостов). Если вы ищете централизованное ведение журнала по разумной цене, Microsoft Application Insights трудно превзойти. Он не может делать все, что умеют более дорогие инструменты, но его сложно превзойти по цене. - person Erik Funkenbusch; 05.03.2019

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

person code5    schedule 23.02.2015
comment
ReflectInsight является коммерческим. На самом деле не сравнимо с nlog, serilog или другими ... - person Erik Funkenbusch; 23.02.2015
comment
Коммерческий - да, но по такой низкой цене он окупается всего за один день работы, снимая все ограничения для всех других решений с открытым исходным кодом, которые в настоящее время существуют, ИМХО. - person code5; 23.02.2015
comment
Это предполагает, что вы - единственный разработчик. Допустим, у вас 500 разработчиков, любой из которых может работать над приложением ... теперь вам нужно купить 500 лицензий, потому что в противном случае вы бы не знали, кто имеет лицензию, а кто нет. Вот что коварно в таких библиотеках, которые вы, одинокий разработчик, просто не понимаете ... И то, что вы большая компания, не означает, что вы можете просто бросить 150 000 долларов в библиотеку для такой единственной цели. - person Erik Funkenbusch; 23.02.2015
comment
Нет, неправда. В этом случае вы платите только за Viewer. Остальная часть библиотеки не требует лицензионных отчислений. Если вам нужен только Log Viewer (не работающий), это бесплатно. - person code5; 23.02.2015
comment
В соответствии с часто задаваемыми вопросами о лицензировании вы должны платить лицензию на каждого разработчика. - person Erik Funkenbusch; 24.02.2015
comment
Да, для Viewer вы это делаете. У меня есть собственная копия Viewer. API не требует лицензионных отчислений. Вы можете скачать его как пакет Nuget без лицензии. По большей части мы регистрируемся только в текстовых и двоичных файлах. Но наличие Live Viewer во время разработки и в некоторых случаях производства - это замечательно, но не обязательно. Но вернемся к исходному вопросу, он действительно поддерживает ведение журнала на основе запросов. Это позволяет очень легко находить проблемы, когда вы можете видеть полные пути выполнения через прослеживаемость, а уровень данных, которые вы регистрируете, безумный. Список коллекций, объектов, JSON и т. Д. - person code5; 24.02.2015
comment
Это не то, о чем говорится в часто задаваемых вопросах по лицензированию, хотя для часто задаваемых вопросов это невероятно расплывчато. В нем утверждается, что вам разрешено распространять файлы, которые явно указаны в лицензионном соглашении, за исключением того, что в лицензионном соглашении явно не перечислены какие-либо файлы. В нем также говорится, что ReflectSoftware не взимает никаких гонораров за распространение библиотек, которые были интегрированы в приложения, которые вы разрабатываете. Конечно, это применимо только в том случае, если у вас есть действующая лицензия на все продукты, которые используются в вашем приложении. - person Erik Funkenbusch; 24.02.2015
comment
Фактически, я не могу найти ни одной ссылки на лицензию, охватывающую только программу просмотра, где-либо на сайте, или лицензии. Все, что он упоминает, - это продукт. - person Erik Funkenbusch; 24.02.2015
comment
Хм ... Позвольте мне у них уточнить. Я также спрошу операторов, поскольку они просили, чтобы мы использовали этот продукт. - person code5; 24.02.2015
comment
@ code5 вы не один из разработчиков ReflectInsight? (Просто читаю ваше раскрытие Я один из разработчиков ReflectInsight на stackoverflow.com/questions/4293206/a-good-logger-for-net/) - следует отметить хороший этикет, особенно при сравнении RI с другими вариантами - person Nicholas Blumhardt; 25.02.2015
comment
(Чтобы не быть резким, извините - просто подумайте, что это важный элемент контекста.) - person Nicholas Blumhardt; 25.02.2015
comment
@NicholasBlumhardt, я один из разработчиков продукта, но я не работаю напрямую в компании ReflectSoftware. То, как они лицензируют свой продукт, не является частью компании, в интересах которой я работаю - это две отдельные организации. Я немного запутался в лицензии и спрашиваю отдел продаж о ясности. Вам требуется только платная лицензия для Live Viewer, которая дает вам постоянную лицензию на Log Viewer. Их API для регистрации данных предоставляется бесплатно, лицензия не требуется. Они сделают это менее расплывчатым, когда обновят свой сайт. Поскольку нашей компании продукт нравится, мы теперь тоже им пользуемся :) - person code5; 25.02.2015