Хтось має досвід для обох? Як вони складаються один проти одного?
Ми плануємо використовувати один з них для входу в корпоративну програму.
Список літератури:
EDIT: У нас немає існуючих залежностей ні nlog, ні log4net.
Хтось має досвід для обох? Як вони складаються один проти одного?
Ми плануємо використовувати один з них для входу в корпоративну програму.
Список літератури:
EDIT: У нас немає існуючих залежностей ні 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. Файл Config настільки інтуїтивний, що кожен може зрозуміти конфігурацію. Наприклад: якщо ви хочете встановити внутрішній вхід у систему, ви встановите прапор у вузлі заголовка файлу конфігураційного файлу Nlog, саме там ви б очікували його. У log4net ви встановлюєте різні прапори в розділі Налаштування web.config.
У log4net внутрішній журнал не виводить часові позначки часу, що дратує. У Nlog ви отримуєте приємний журнал із мітками часу. Я вважав це дуже корисним у своїх оцінках.
Фільтри в log4net - Ви краще перевірте моє запитання - фільтр log4net - як писати І фільтрувати, щоб ігнорувати повідомлення журналу, і якщо ви знайдете відповідь / рішення на це, будь ласка, повідомте мене. Я розумію, для цього питання є вирішення, оскільки ви можете написати власний спеціальний фільтр. Але те, що не так легко доступно в log4net.
Продуктивність - я зареєстрував близько 3000 журнальних повідомлень у базі даних за допомогою збереженої процедури. Я використовував простий цикл (int i = 0; i <3000; i ++ ..., щоб записати одне і те ж повідомлення 3000 разів. Для write: log4net AdoAppender зайняв майже вдвічі більше часу, ніж NLog.
Log4net не підтримує асинхронний додаток.
Для мене було достатньо порівняння, щоб обрати NLog як рамку ведення журналу. :)
Для всіх, хто запізниться на цю тему пізно, ви можете заглянути в бібліотеку базових класів .Net (BCL). Багато людей пропустили зміни між .Net 1.1 та .Net 2.0, коли був представлений клас TraceSource (близько 2005 р.).
Використання TraceSource є аналогічним іншим структурам реєстрації журналів, із детальним контролем ведення журналів, конфігурацією в app.config / web.config та програмним доступом - без накладних витрат блоку додатків підприємства.
Також існує ряд порівнянь: "log4net проти TraceSource"
Для нас ключова відмінність полягає в загальному ...
Погляньте на Logger.IsDebugEnabledNLog порівняно з 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 . Він поставляється з приємним дизайнером.
Виходячи з мого досвіду, SmartInspect перемагає як NLog, так і log4net.
Його надзвичайно проста у використанні, документація чудова, і ви можете переглядати та фільтрувати раніше зареєстровані повідомлення за допомогою їх інтерактивного переглядача журналів, що є величезною перевагою у реальному світі.
Одне, що мені подобається, це перегляд даних на вкладках, як вкладки браузера в Chrome. Кожна вкладка може надавати інший відфільтрований вигляд журналу.