JYU Blog

Dotnet Core3.1 Console使用NLog筆記
2021-01-25 12:05:00

範例程式:https://github.com/s123600g/DotnetCore_Console_NLog_Demo


Step 1. 建立 .net core console app 專案

手動使用Microsoft Visual Studio建立.Net Core 3.1 Console專案。


Step 2. 對專案安裝相關套件,使用Nuget套件管理員進行


Step 3. 建立組態設定檔 appsettings.json

{
  "NLog": {
    "autoReload": true,
    "throwConfigExceptions": false,
    "internalLogLevel": "info",
    "internalLogFile": "${basedir}/logs/internal-nlog/internal-nlog.txt",
    "targets": {
      "logfile": {
        "type": "File",
        "fileName": "${basedir}/logs/NLogDeml${shortdate}.log",
        "layout": "${date} [${uppercase:${level}}] ${message} ${exception}${newline}"
      },
      "logconsole": {
        "type": "Console",
        "layout": "${date} [${uppercase:${level}}] ${message} ${exception}"
      }
    },
    "rules": [
      {
        "logger": "*",
        "minLevel": "Debug",
        "writeTo": "logfile,logconsole"
      }
    ]
  }
}

關於NLog設定參數可參考

要設定紀錄輸出目的端是在"targets" 在上面設定中,有兩種輸出目的端一種是寫入到記錄檔(File),另一種是輸出至Console畫面視窗中(Console)。

有關內容參數值可參考 https://nlog-project.org/config/?tab=layout-renderers

要設定輸出規則是在"rules"


Step 4. 完成Program.cs內容


Step 5. 建置專案並執行

在專案目錄bin\Debug\netcoreapp3.1底下可以看到logs/目錄,NLog產生記錄檔放置在此目錄底下

初步建置過程碰到下面問題,筆記解決方式

嚴重性 程式碼 說明 專案 檔案 行 隱藏項目狀態
錯誤 CS1061  'IConfigurationBuilder' 未包含 'AddJsonFile' 的定義,也找不到可接受類型 'IConfigurationBuilder' 第一個引數的可存取擴充方法 'AddJsonFile'(是否遺漏 using 指示詞或組件參考?) DotnetCore_Console_NLog_Demo E:\Project\DotnetCore_Console_NLog_Demo\Program.cs  16  作用中

根據 https://stackoverflow.com/a/27382878,在Nuget加入此套件 → Microsoft.Extensions.Configuration.Json


相關參考

  1. NLog
  2. NLog Configuration-file Rules
  3. NLog Get Start
  4. Getting started with .NET Core 2 Console application
  5. NLog configuration with appsettings.json