NLog 使用Layout renderer取得appsettings中的設定

需要根據不同環境改變nlog.config中的設定時,可以透過Layout renderer直接把nlog.config中的參數置換成appsettings中對應的值

之前是透過gdc來實作動態更換nlog.config中的連線字串

根據部署環境動態配置NLog連線字串 | 攻城獅的學習筆記 - 點部落 (dotblogs.com.tw)

後來發現NLog其實支援直接從appsettings中取資料,以前面那篇文章的例子來改寫

appsettings.json中的連線字串長這樣

{
  "ConnectionStrings": {
    "LoggerDB": "Server=localhost;Port=3306;User Id=root;Password=*****;Database=Logger;Allow User Variables=true;SslMode=none;"
  }
}

nlog.config中連線字串的部份改成

<connectionString>${configsetting:item=ConnectionStrings.LoggerDB}</connectionString>

若要取appsettings巢狀結構的值,key之間使用做連接就可以了

參考文章:


NLog在Asp.Net中也可以直接讀取config檔中的設定,詳細請參考這篇:

AppSetting Layout Renderer · NLog/NLog Wiki · GitHub