我如何一次覆盖appsettings.json中的所有数组属性

问题描述 投票:1回答:1

我知道使用appsettings.Development.json文件可以覆盖默认设置。我也知道我们可以使用array:i incidator更改json数组中的单个属性。

问题是,是否可以一次覆盖所有json值。像以下示例中的登录规则一样?

appsettings.Development.json

...
  "NLog": {
...
    "rules": [
      {
        "logger": "*",
        "minLevel": "Info",
        "writeTo": "logconsole"
      },
      {
        "logger": "*",
        "minLevel": "Error",
        "writeTo": "allfile"
      }
    ]
...

示例解决方案appsettings.Development.json

{
  "NLog": {
    "rules:*": {
      "minLevel": "Error"
    }
  }
}
json asp.net-core .net-core nlog appsettings
1个回答
0
投票

使用NLog ver。 4.6.7您不必覆盖所有数组属性。您可以在规则部分中将NLog Config变量用作minLevel。例如:

{
  "NLog": {
    "variables": {
      "MinLevelInfo": "Info"
      "MinLevelError": "Error"
    },
    "rules": [
      {
        "logger": "*",
        "minLevel": "${MinLevelInfo}",
        "writeTo": "logconsole"
      },
      {
        "logger": "*",
        "minLevel": "${MinLevelError}",
        "writeTo": "allfile"
      }
    ]
  }
}

appsettings.Development.json中的示例替代

{
  "NLog": {
    "variables": {
      "MinLevelInfo": "Debug"
      "MinLevelError": "Debug"
    }
}

现在,您只需要重写NLog变量,它们就会被NLog自动应用。另请参见https://github.com/NLog/NLog/pull/2709https://github.com/NLog/NLog/pull/3184

© www.soinside.com 2019 - 2024. All rights reserved.