Microsoft.Extensions.Logging Vs. NLog - PullRequest
       7

Microsoft.Extensions.Logging Vs. NLog

1 голос
/ 02 октября 2019

Я вижу много постов, в которых упоминается использование Microsoft.Extensions.Logging вместе с NLog.

Я бы хотел лучше понять, для чего используется Microsoft.Extensions.Logging?

И, в частности, зачем это нужно или какая польза от его использования вместе с NLog?

1 Ответ

2 голосов
/ 03 октября 2019

С NLog вы можете сделать:

var logger = NLog.LogManager.GetCurrentClassLogger();
logger.Info("Hello {Name}", "Earth");

Это работает для всех платформ и всех фреймворков.

Microsoft.Extensions.Logging

С введением .NETЯдро, абстракция регистрации введена Microsoft - Microsoft.Extensions.Logging. Вы можете использовать эту абстракцию журналирования в своем проекте и интегрировать ее с NLog.

Например, в ASP.NET Core вы можете добавить Microsoft.Extensions.Logging.ILogger<HomeController>, и это может отправить журналы в NLog. (см. Начало работы с ASP.NET Core 2 · NLog / NLog Wiki )

using Microsoft.Extensions.Logging;

public class HomeController : Controller
{
    private readonly ILogger<HomeController> _logger;

    public HomeController(ILogger<HomeController> logger)
    {
        _logger = logger;
    }

    public IActionResult Index()
    {
        _logger.LogInformation("Index page says hello {Name}", "Universe");
        return View();
    }

Пакеты

Для NLog и Microsoft.Extensions.Logging есть следующиепакеты:

  • Абстракции ведения журнала ядра .NET находятся в пакете Microsoft.Extensions.Logging.Abstractions
  • Интеграция NLog для этих абстракций находится в пакете NLog.Extensions.Logging . Вы можете использовать этот пакет для консольных приложений .NET Core.
  • Для ASP.NET Core существует оптимизированный пакет NLog.Web.AspNetCore , в котором используется NLog.Extensions.Logging

Сравнение

NLog Pros

Плюсы использования NLog напрямую

  • Наилучшая производительность
  • Дополнительные параметры с API регистратора,например, Logger.WithProperty(..)
  • Работает на всех платформах
  • Нет необходимости внедрения зависимостей, что экономит сложность.

Плюсы Microsoft.Extensions.Logging

Плюсы использования NLog через Microsoft.Extensions.Logging:

  • Полная интеграция с ASP.NET Core, напримерMicrosoft также записывает данные в API регистратора, и это также будет записано (и, возможно, отфильтровано) с помощью NLog
  • Запись в абстракцию ведения журнала сделает вашу библиотеку журнала кода независимой.
  • Хорошо работает с внедрением зависимости .NET Core
...