首页 文章

如何使用环境变量覆盖ASP.NET Core配置数组设置

提问于
浏览
27

LT;DR

在ASP.NET Core应用程序中,我有一个 appsettings.json 配置文件,该文件使用JSON数组来配置一组设置 .

如何使用环境变量覆盖其中一个数组对象的设置?

Background

我在ASP.NET核心应用程序中使用serilog并使用Serilog.Settings.Configuration,允许使用 appsettings.json 进行配置 .

配置是这样的:

{
  "Serilog": {
    "Using":  ["Serilog.Sinks.Literate"],
    "MinimumLevel": "Debug",
    "WriteTo": [
      { "Name": "File", "Args": { "path": "%TEMP%\\Logs\\serilog-configuration-sample.txt" } }
    ],
    "Enrich": ["FromLogContext", "WithMachineName", "WithThreadId"],
    "Properties": {
        "Application": "Sample"
    }
  }
}

部署后,我想覆盖一些设置,例如MinimumLevel和日志文件的路径 . 我首选的选择是通过环境变量来实现这一点,因为我通过Azure管理门户使用应用程序设置(这些是作为环境变量实现的) .

我可以通过添加名称为: Serilog:MinimumLevel 且应用程序名称为 Serilog:Properties:Application 的环境变量来轻松设置MinimumLevel .

使用数组指定设置的格式是什么?

1 回答

  • 29

    在查看调试器中的配置后,我找到了答案 .

    Serilog:WriteTo:0:Args:path

    所以我需要使用数组索引(基于零),就好像它是一个名称 .

    在调试器的屏幕截图下面,如果它有帮助,也(感谢评论中的Victor Hurdugaci),unit tests是一个寻找示例的好地方 .

    configuration in the debugger

相关问题