1. 程式人生 > >.NET Core 2.0 MVC / Web API使用NLog

.NET Core 2.0 MVC / Web API使用NLog

.NET Core 2.0 MVC / Web API使用NLog

1. 專案,新增NuGet引用

Install-Package NLog.Web.AspNetCore
​
Install-Package NLog

 

2. 建立一個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"
      autoReload="true"
      internalLogLevel="off"
      internalLogFile="Log\internal-nlog.txt">
  <!--internalLogLevel設定為off,即關閉內部日誌記錄-->
  <!-- 啟用asp.net核心佈局渲染器 -->
  <extensions>
    <add assembly="NLog.Web.AspNetCore"/>
  </extensions>
​
  <!-- 要寫入的目標 -->
  <targets>
    <target xsi:type="File" name="ApiLog" fileName="Log\${shortdate}.log" layout="${longdate} ${level} ${message}"/>
  </targets>
​
  <!-- 從記錄器名稱對映到目標的規則 -->
  <rules>
    <!--final="true",不指定writeto,表示跳過所有微軟相關(Microsoft.*)的日誌-->
    <logger name="Microsoft.*" maxlevel="Info" final="true" />
    <!-- 此條表示記錄所有日誌,並且指定最低和最高日誌記錄級別,繫結到target——>ApiLog -->
    <logger name="*" minlevel="Trace" maxlevel="Fatal" writeTo="ApiLog" />
  </rules>
</nlog>

 

 

建立完畢後,允許nlog.config啟用複製到bin資料夾 ,有兩種方式,經過本人嘗試,建議使用第二種方法,不然Log資料夾會在專案根目錄的同一級資料夾中建立

  1. 點選nlog.config,右鍵——屬性——複製到輸出目錄——始終複製
  2. 編輯.csproj檔案,新增以下內容
< ItemGroup >
    < Content  Update = “ nlog.config ”  CopyToOutputDirectory = “ PreserveNewest ” />
  </ ItemGroup >

3.更新Program.cs檔案,新增對NLog的引用,並設定日誌記錄範圍

 

 

public class Program
    {
        public static void Main(string[] args)
        {
            //NLog: 首先設定記錄器以捕獲所有錯誤
            var logger = NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
            BuildWebHost(args).Run();
​
        }
​
        public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .ConfigureLogging(logging =>
            {
                logging.ClearProviders();
                logging.SetMinimumLevel(LogLevel.Trace);
            })
            .UseNLog()  // NLog: 設定NLog進行依賴注入
            .Build();
    }

 

 

4. 在專案中呼叫

 

private readonly ILogger<HomeController> _logger;
​
        public HomeController(ILogger<HomeController> logger)
        {
            _logger = logger;
        }
​
        public IActionResult Index()
        {
            _logger.LogInformation("Ha ha,I'm Home Index Page");
            return View();
        }

 

 

5. 到這裡就能在專案的bin\Debug\netcoreapp2.0\Log資料夾下看到你的日誌記錄了