過往NLog有很多使用者,筆者也是使用NLog,但它需要額外用XML來做設定,而不是合併到appsetting.json。而Serilog的設定就較為簡易,而且複雜的設定也可以移到appsetting.json,以下示範Serilog的使用。

第一種是直接在Program.cs上設定:

Log.Logger = new LoggerConfiguration()
    .WriteTo.File("logs/log.log",
        rollingInterval: RollingInterval.Day,
        rollOnFileSizeLimit: true)
    .CreateLogger();

rollingInterval: RollingInterval.Day這個設定,可以讓log檔以天為單位,讓檔案易於管理。

另一種就是用設定檔:

Log.Logger = new LoggerConfiguration()
    .ReadFrom.Configuration(builder.Configuration)
    .CreateLogger();

上段程式碼是直接透過設定檔讀取設定,下列則是放在appsetting.json裡的設定:

"Serilog": {
"Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],
"MinimumLevel": "Debug",
"WriteTo": [
  { "Name": "Console" },
  {
    "Name": "File",
    "Args": {
      "path": "logs/log.txt",
      "rollingInterval": "Day",
      "rollOnFileSizeLimit": true
    }
  }
]
}

參考資料