【问题标题】:How can I override all array properties in appsettings.json at once如何一次覆盖 appsettings.json 中的所有数组属性
【发布时间】:2020-02-13 09:08:11
【问题描述】:

我知道使用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】:

    使用 NLog 版本。 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

    【讨论】:

      猜你喜欢
      • 2016-08-06
      • 1970-01-01
      • 2013-06-04
      • 2020-07-17
      • 2012-10-04
      • 1970-01-01
      • 2016-07-29
      • 1970-01-01
      • 2018-08-14
      相关资源
      最近更新 更多