У кого-нибудь есть опыт для обоих? Как они складываются друг против друга?
Мы планируем использовать один из них для входа в корпоративное приложение.
Ссылки:
РЕДАКТИРОВАТЬ: У нас нет существующих зависимостей ни nlog или log4net.
У кого-нибудь есть опыт для обоих? Как они складываются друг против друга?
Мы планируем использовать один из них для входа в корпоративное приложение.
Ссылки:
РЕДАКТИРОВАТЬ: У нас нет существующих зависимостей ни nlog или log4net.
Ответы:
Недавно мне было поручено «прототипировать некоторые логи» для предстоящего проекта. У меня не было опыта работы с каркасом. Я исследовал, пробежал учебники, сделал игрушечные приложения и т. Д. В Log4Net, NLog и Enterprise Library в течение нескольких дней. Вернулся через 3-4 недели и собрал их в связное демо. Надеюсь, что-то из этого вам пригодится.
Моя рекомендация для нашего проекта:
Вот на основании этих выводов (мнений!):
Очевидно, мне пока нравится NLog. Однако недостаточно использовать его, несмотря на наличие другого решения.
Ключевое соображение, которое не особо обсуждается, - это поддержка и обновления.
Log4Net не обновлялся с версии 1.2.10, опубликованной 19 апреля 2006 года .
Напротив, NLog активно поддерживается с 2006 года, и вскоре он выпустит NLog 2.0, поддерживающий многие платформы, которых не было на момент последнего обновления log4net, такие как:
Имея опыт работы с обеими фреймворками в последнее время, я подумал, что могу поделиться своими взглядами на каждую фреймворк.
Меня попросили оценить рамки ведения журналов для существующего веб-приложения, и я сузил свой выбор до NLog (v2.0) и log4net (v1.2.11) после прохождения различных онлайн-форумов. Вот мои выводы:
Настройка / запуск с NLog очень прост. Вы просматриваете руководство по началу работы на их веб-сайте, и все готово. Вы понимаете, как все может быть с nlog. Конфиг файл настолько интуитивно понятен, что любой может понять конфигурацию. Например: если вы хотите установить внутренний вход в систему, вы устанавливаете флаг в узле заголовка файла конфигурации Nlog, где вы и ожидаете. В log4net вы устанавливаете различные флаги в разделе appSettings web.config.
В log4net внутренняя регистрация не выводит временную метку, которая раздражает. В Nlog вы получаете хороший журнал с метками времени. Я нашел это очень полезным в моих оценках.
Фильтры в log4net - Вам лучше проверить мой вопрос - фильтр log4net - как написать И фильтр, чтобы игнорировать сообщения журнала, и если вы найдете ответ / решение для этого, пожалуйста, дайте мне знать. Я понимаю, что есть обходной путь для этого вопроса, так как вы можете написать свой собственный фильтр. Но то, что не легко доступно в log4net.
Производительность - я записал около 3000 сообщений журнала в базу данных, используя хранимую процедуру. Я использовал простой цикл for (int i = 0; i <3000; i ++ ... для записи одного и того же сообщения 3000 раз. Для записи: log4net AdoAppender занял почти вдвое больше времени, чем NLog.
Log4net не поддерживает асинхронный appender.
Для меня было достаточным сравнением, чтобы выбрать NLog в качестве основы логирования. :)
Для тех, кто опаздывает в этот поток, вы можете заглянуть в .Net Base Class Library (BCL). Многие люди пропустили изменения между .Net 1.1 и .Net 2.0, когда появился класс TraceSource (около 2005 г.).
Использование TraceSource аналогично другим средам ведения журналов, с детальным контролем ведения журналов, настройкой в app.config / web.config и программным доступом - без дополнительных затрат блока корпоративного приложения.
Есть также ряд сравнений: «log4net vs TraceSource»
Для нас ключевое отличие заключается в общем ...
Посмотрите на Logger.IsDebugEnabled
NLog по сравнению с Log4Net, из наших тестов у NLog меньше накладных расходов, и это то, к чему мы стремимся (вещи с низкой задержкой).
Ура, Флориан
Сначала посмотрите на остальную часть вашего стека.
Если вы используете NHibernate, он использует Log4Net напрямую. Другие структуры могут иметь другие конкретные регистраторы, которые им нужны.
Кроме этого: оба работают нормально.
Я сам остановился на Log4Net. Это может быть боль в настройке, и если он не настроен правильно, это боль, чтобы выяснить, что пошло не так. Но вы можете заставить его делать почти все, что вы хотите от регистратора.
Если у вас нет постоянной проблемы с Log4Net, вот статья, которую я написал о том, как начать с ней: http://elegantcode.com/2007/12/07/getting-started-with-log4net/
Хорошо .. Я использовал библиотеку Enterprise для задач регистрации базы данных, и теперь я переключился на NLog из-за узкого места в производительности.
немного информации для сравнения:
http://pauliusraila.blogspot.com/2010/10/solving-database-logging-bottlenecks.html
Я повторяю вышеизложенное и предпочитаю nLog. Энтлиб без надобности раздутый.
Re: Log4net Одна вещь, которую ВСЕГДА получает мне с log4net, - это забывание добавить следующее в global.asax для инициализации компонента:
log4net.Config.XmlConfigurator.Configure();
Если вы зайдете сюда, вы найдете исчерпывающую матрицу, включающую библиотеки NLog и Log4Net, а также Enterprise Lib и другие продукты.
Кто-то может поспорить, что матрица сделана таким образом, чтобы подчеркнуть особенности единственной коммерческой библиотеки, присутствующей в матрице. Я думаю, что это правда, но в любом случае было полезно сделать выбор - NLog.
С уважением
Как я заметил, log4net блокирует свои выходные файлы все время работы приложения, поэтому вы не можете их удалить. В остальном они похожи.
Поэтому я предпочитаю NLog.
Бесстыдный плагин для проекта с открытым исходным кодом, который я запускаю, но, учитывая оживленную дискуссию о том, какая среда ведения журналов .NET более активна, я решил опубликовать обязательную ссылку на Serilog .
Для использования в приложении Serilog похож (и сильно использует) log4net. В отличие от других параметров ведения журнала .NET, Serilog предназначен для сохранения структуры событий журнала для автономного анализа. Когда вы пишете:
Log.Information("The answer is {Answer}", 42);
Большинство библиотек журналов немедленно отображают сообщение в строку. Serilog может сделать это тоже, но сохраняет { Answer: 42 }
свойство, чтобы позже, используя одно из нескольких хранилищ данных NoSQL, вы могли правильно запрашивать события, основываясь на значенииAnswer
.
Мы близки к 1.0 и поддерживаем все современные (.NET 4.5, Windows Store и Windows Phone 8) платформы.
Я тоже второй NLog, потому что он работает и с неуправляемым кодом. Я предполагаю, что можно было бы использовать вместе log4net и log4cxx, но NLog обрабатывает как управляемый, так и неуправляемый код из коробки.
Я также посмотрел на Common.Logging , фасад, который делает абстракцию API регистрации, он поддерживает log4net, NLog и Entreprise Library. Я не думаю, что я буду использовать его, но мне нравится, как они используют лямбда-выражения для повышения производительности, когда ведение журнала отключено (функция, используемая совместно с NLog и, возможно, другими).
Вы также можете рассмотреть блокировку журнала Microsoft Enterprise Library . Это идет с хорошим дизайнером.
Основываясь на моем опыте, SmartInspect превосходит как NLog, так и log4net.
Он чрезвычайно прост в использовании, документация великолепна, и вы можете просматривать и фильтровать ранее зарегистрированные сообщения с помощью их интерактивного средства просмотра журналов, что является огромным реальным преимуществом.
Одна вещь, которая мне нравится - это представления данных с вкладками, такие как вкладки браузера в Chrome. Каждая вкладка может предоставить различное отфильтрованное представление журнала.