1. 程式人生 > 實用技巧 >.NET Core use NLog

.NET Core use NLog

Nlog 實現了Microsoft.Extensions.Logging.ILogger。

首先Nuget下載新增引用:NLog.Extensions.Logging

在新增NLog的配置檔案“NLog.Config” 到專案,內容如下:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <
targets> <target name="logfile" xsi:type="File" fileName="Log/log.txt" /> <target name="console" xsi:type="Console" /> </targets> <rules> <logger name="*" minlevel="Info" writeTo="logfile" /> <logger name="*" minlevel="Info" writeTo="console" /> </
rules> </nlog>

在:Program 類(我這個是Console程式)修改:

 public static IHostBuilder CreateHostBuilder(string[] args) =>

          Host.CreateDefaultBuilder(args).ConfigureLogging(logging =>
          {
              logging.ClearProviders();
              logging.AddNLog();
              logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
}) .ConfigureServices((hostContext, services) => { services.AddHostedService<DataService>(); });

  

在用的地方注入Microsoft.Extensions.Logging.ILogger:

       private Microsoft.Extensions.Logging.ILogger<DataService> _logger;
        public DataService(ILogger<DataService> logger) {
            _logger = logger;
        }

        protected  void Test()
        {
         
                _logger.LogError("test.........");

  

最後會在Log/log.txt 記錄日誌輸出資訊。

另外可以定義為NLog.ILogger _logger;

可惜的是NLog沒有NLog.ILogger<T>這種形式!!!!

也不能直接注入NLog.ILogger,會報 'Unable to resolve service for type 'NLog.ILogger' while attempting to activate 。

可以這樣:

 private readonly Logger _logger;
 public DataService()
       {
        
            _logger = LogManager.GetCurrentClassLogger();
        }