Enterprise Logging Block vs NLog vs log4net

Мне нужно использовать библиотеку ведения журнала в моем проекте и рассмотреть вопрос между блоком регистрации предприятия, NLog и log4net. Я нашел несколько ссылок по сравнению, но большинство из них довольно старые и жалуются на такие вещи, как отсутствие новых версий log4net в течение длительного времени и т. Д.

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


person imak    schedule 11.02.2011    source источник
comment
взгляните на этот ответ: stackoverflow.com/questions/710863/ log4net-vs-nlog /   -  person Stefan Egli    schedule 11.02.2011


Ответы (5)


Мне лично нравится log4net. Он быстрый, стабильный и настраиваемый (и его действительно легко расширить с помощью специального приложения или чего-то подобного).

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

Вот немного похожий вопрос, возможно, вы сможете также используйте некоторые ответы оттуда.

person driis    schedule 11.02.2011
comment
Этот парень написал что в Log4Net было много ошибок и что он не работал во многих собственных тестовых наборах. Ситуация, возможно, улучшилась, но я бы не стал называть ее стабильной из-за проблем, описанных ниже, с количеством времени, которое потребовалось для выпуска версии, совместимой с .NET4. - person Scott Simontis; 09.04.2015
comment
@Scott: это очень старый пост. Сейчас log4net снова находится в разработке, например, текущая версия от 2015-03. Так что это неверный аргумент. - person VikciaR; 19.06.2015

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

NLog, кажется, поддерживается лучше: несовместимость log4net с .Net4 оставалась неразрешенной в log4net в течение довольно долгого времени. В Nlog есть еще несколько наворотов, таких как пакет NuGet и схема Xml для Visual Studio для редактирования файлов конфигурации.

В конце концов, мы выбрали log4net, потому что мы измерили гораздо лучшую производительность для log4net: простой тест, записывающий 10000 сообщений журнала в файл и в средство просмотра сетевых журналов (Log2Console), показал в десять раз лучшую производительность log4net! Мы не делали настройки в файле конфигурации, файл и регистратор неработоспособности использовались с минимальной конфигурацией. Вы должны убедиться в этом сами, используя типичную настройку журналирования вашего проекта.

person W.Gross    schedule 25.01.2012
comment
Только что взглянул на профилировщик: похоже, проблема в настройках логгеров по умолчанию. log4net сохраняет файл журнала открытым по умолчанию, NLog - нет. если вы правильно настроите NLog, он покажет ту же производительность, что и log4net. - person W.Gross; 25.01.2012
comment
Я хотел бы увидеть подробный анализ производительности регистратора, большая часть обсуждений, которые я видел, похоже, вращается вокруг ограниченного числа личных тестовых случаев. Я слышал, как многие люди говорят, что NLog для них был значительно быстрее по сравнению с Log4Net, но ни один из них не предлагал цифры. Тем не менее, они оба быстрее, чем ведение журнала EntLib :) - person Scott Simontis; 09.04.2015

Вы можете отложить решение, «какой регистратор использовать», если вы используете Common.Logging. Это оболочка журналирования, в которой вы можете настроить ведение журнала в log4net, nlog, System.Diagnostics.Debug. Я не знаю Enterprise Logging Block и не знаю, есть ли плагин Enterprise Logging Block для общего журналирования.

person k3b    schedule 11.02.2011
comment
Эта ссылка не обновляется. Вместо этого вам следует сделать ссылку на github.com/net-commons/common-logging, - person Rosdi Kasim; 09.03.2015
comment
@Rosidi спасибо за информацию. Я обновил ссылку с netcommon.sourceforge.net на github.com/net-commons/common-logging - person k3b; 10.03.2015

Другое отличие, которое часто упускают из виду, заключается в том, что NLog - это BSD, а log4net - под Apache лицензией. ELB - это MS-PL (версия с открытым исходным кодом от Microsoft). В большинстве случаев это может не иметь значения, просто сказать.

person nawfal    schedule 02.02.2013
comment
в чем именно разница между лицензией BSD и лицензией Apache? Думаю, я тоже столкнулся с этой разницей в лицензиях Thrift и Zeroc. - person Nick; 15.04.2014
comment
Обе они являются довольно похожими разрешительными лицензиями, причем Apache более подробный (и, следовательно, сложный) и ограничительный. Я мало что понимаю, но одно существенное отличие состоит в том, что с лицензией Apache вы должны явно указывать изменения, которые вы вносите в код. - person nawfal; 15.04.2014

Я считаю, что все они очень похожи и способны. Прошло несколько лет с тех пор, как я использовал блок регистрации корпоративной библиотеки, но даже тогда он был приличным. NLog и log4net надежны.

Одной из причин выбора одного из них может быть интеграция сторонних библиотек. Если вы используете NHibernate или Quartz или другие библиотеки, которые, например, используют log4net, это может повлиять на ваш выбор.

person quentin-starin    schedule 11.02.2011