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

标签 configuration asp.net-core .net-core serilog

<强> TL;DR

在 ASP.NET Core 应用中,我有一个 appsettings.json 配置文件,它使用 JSON 数组来配置设置集合。

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

背景

我正在使用Serilog在 ASP.NET Core 应用程序中并使用 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 应用服务时通过环境变量执行此操作,因此我将通过 Azure 管理门户使用应用设置(这些设置作为环境变量实现)。

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

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

最佳答案

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

  • Serilog__WriteTo__0__Args__path(所有平台)
  • Serilog:WriteTo:0:Args:path (Windows)
  • Serilog--WriteTo--0--Args--path(源自 Azure Key Vault)

Note: The Configuration in ASP.NET Core documentation now covers this.

所以我需要使用数组索引(从零开始),就像它是一个名称一样。

这是调试器的屏幕截图(感谢评论中的Victor Hurdugaci),unit tests是寻找示例的好地方。

configuration in the debugger

关于configuration - 如何使用环境变量覆盖 ASP.NET Core 配置数组设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37657320/

相关文章:

git - git 中有哪些不同的存储库格式版本(对于 core.repositoryFormatVersion 设置)?

linux - 我可以使用 puppet 停止 Linux 服务器上的服务吗?

azure - 将 rc2 asp.net core 应用程序发布到 Azure

command-line-interface - 更新 dotnet-host Ubuntu 16.04 后出错

c# - 以编程方式配置 log4net,但额外的日志记录将输出到控制台

configuration - 无法编辑 Sublime Text 的默认设置

c# - 如何生成从 Controller 到 razorpages 的链接?

c# - 没有指定 authenticationScheme,也没有找到基于自定义策略的授权的 DefaultForbidScheme

linux - arch linux 上的 asp.net core 2.1 无法运行

c# - .net core 3.0,服务未使用 HostBuilder 注册以进行集成测试