2016-12-26 12 views
5

Мы используем NLog или Serilog для ведения журнала. Мы заняты переносом системы с ASP.NET на ядро ​​ASP.NET, которое has logging built in.Является ли встроенное ведение журнала ASP.NET Core для Nlog/Serilog/etc устаревшим?

В идеале мы хотели бы отказаться от NLog, так как больше не требуется.

Однако, это встроенный регистрационный эквивалент NLog? Не хватает ли каких-либо основных функций? Есть ли смысл продолжать использовать NLog (или что-то подобное, например Serilog)?

ответ

4

Регистрация в asp.net - это общий (протоколирующий) интерфейс и реализация протокола.

Вы можете использовать общий интерфейс и стороннюю библиотеку (например, NLog) вместе, поскольку инфраструктура подготовлена ​​для этого.

Если вы NLog над встроенной лесозаготовки реализации вы выигрываете:

  • изменения конфигурации на лету (во время работы приложения без перезагрузки)
  • более целей (например, базы данных, файл). Во встроенном объекте нет цели файла: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging. Почтовая цель в NLog еще не установлена ​​в netstandard, но она запланирована.
  • больше возможностей в целевых (например, архивирование файлов)
  • пишущих дополнительную информацию контекста, как ${processid}
  • как мы вкладываем много в оптимализации производительности, я бы ожидать производительности.
  • асинхронное ведение журнала - что не входит в asp.net протоколирование, насколько я знаю.
  • расширенные функции, такие как буферизация, fallbacking & ограничения журналов, условие фильтра с контекстной информацией, пишущей CONCURRENT в один файл и т.д.
  • NLog легче расширить (не только цели, но и макет рендеры, макеты и т.д.)
  • возможность для структурного каротажа (Serilog, NLog 4.5)

Но, как всегда, если вам не нужны эти функции, то, возможно, меньше (библиотек) больше.

+0

Пропущено ли асинхронное ведение журнала в NLog или из ядра ASP.NET? – grokky

+0

Aspnet core. Перефразировал его :) – Julian

+0

Что касается «изменения конфигурации на лету (при запуске приложения без перезагрузки)» -> некоторые из ASP.NET-серверы также поддерживают это! Но NLog определенно намного более привлекателен! – Eilon

5

Я бы не сказал, что API ведения журнала ASP.NET Core делает NLog и другие поставщики устаревшими. То, что предоставляет ASP.NET Core, является хорошей абстракцией, поэтому фреймворки регистрации могут переключаться без изменения кода, который зависит от ведения журнала.

Nlog по-прежнему предоставляет полезные configuration features, которые не реализованы в API ведения журнала ASP.NET Core.

+0

Да Конфигурация NLog через XML-файл полезна. Однако это можно легко сделать в платформе ASP.NET Core. Интересно, достаточно ли это для того, чтобы сохранить NLog. – grokky

+0

Ну, тогда я думаю, это зависит только от ваших требований. Если API ведения журнала ASP.NET вам достаточно - используйте его. Имейте в виду, что если вы хотите подключиться к текстовому файлу, а не только к консоли, вам придется использовать некоторый поставщик протоколирования. Serilog имеет простую конфигурацию для пересылки журналов в текстовый файл. – Andrius

+0

Не понял, что [не записывается на диск] (https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging#built-in-logging-providers). Это основная недостающая функция! – grokky