С 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 есть следующиепакеты:
Сравнение
NLog Pros
Плюсы использования NLog напрямую
- Наилучшая производительность
- Дополнительные параметры с API регистратора,например,
Logger.WithProperty(..)
- Работает на всех платформах
- Нет необходимости внедрения зависимостей, что экономит сложность.
Плюсы Microsoft.Extensions.Logging
Плюсы использования NLog через Microsoft.Extensions.Logging:
- Полная интеграция с ASP.NET Core, напримерMicrosoft также записывает данные в API регистратора, и это также будет записано (и, возможно, отфильтровано) с помощью NLog
- Запись в абстракцию ведения журнала сделает вашу библиотеку журнала кода независимой.
- Хорошо работает с внедрением зависимости .NET Core