Configuration 如何使用环境变量覆盖ASP.NET核心配置数组设置
在ASP.NET核心应用程序中,我有一个Configuration 如何使用环境变量覆盖ASP.NET核心配置数组设置,configuration,asp.net-core,.net-core,serilog,Configuration,Asp.net Core,.net Core,Serilog,在ASP.NET核心应用程序中,我有一个appsettings.jsonconfig文件,它使用json数组来配置设置集合 如何使用环境变量覆盖其中一个数组对象的设置 背景 我在ASP.NET核心应用程序中使用,并使用,允许使用appsettings.json对其进行配置 配置如下: { “Serilog”:{ “使用”:[“Serilog.Sinks.Literate”], “最小级别”:“调试”, “书面形式”:[ {“Name”:“File”,“Args”:{“path”:“%TEMP%\
appsettings.json
config文件,它使用json数组来配置设置集合
如何使用环境变量覆盖其中一个数组对象的设置
背景
我在ASP.NET核心应用程序中使用,并使用,允许使用appsettings.json
对其进行配置
配置如下:
{
“Serilog”:{
“使用”:[“Serilog.Sinks.Literate”],
“最小级别”:“调试”,
“书面形式”:[
{“Name”:“File”,“Args”:{“path”:“%TEMP%\\Logs\\serilog configuration sample.txt”}
],
“丰富”:[“FromLogContext”、“WithMachineName”、“WithThreadId”],
“财产”:{
“应用程序”:“示例”
}
}
}
部署时,我希望覆盖一些设置,例如MinimumLevel和日志文件的路径。我的首选选项是在部署到Azure应用程序服务时通过环境变量执行此操作,因此我将通过Azure管理门户使用应用程序设置(这些设置作为环境变量实现)
我可以通过添加一个名为:Serilog:MinimumLevel
和应用程序名Serilog:Properties:application
的环境变量轻松设置MinimumLevel
用数组指定设置的格式是什么?在调试器中查看配置后,我找到了答案
(所有平台)Serilog\uuuuu WriteTo\uuuuuu 0\uuuu Args\uuu path
(Windows)Serilog:WriteTo:0:Args:path
(来源于Azure密钥库)Serilog--WriteTo--0--Args--path
这些测试是另一个寻找例子的好地方:@VictorHurdugaci链接已经死了。这里有一个更新版本:@JamesSkimming啊,对了,我只检查了注释中的链接:)如果在unix系统中使用此环境变量,则必须将
:
替换为\uuuuu
:Serilog\uuu WriteTo\uuu 0\uu Args\uu path
现在的文档建议始终在:表单上使用uu表单,即使是在Windows上,我也有同样的问题——我无法忍受名称、冒号和数组索引(Serilog:WriteTo:0:Args:path)的魔力,几个月前我编写了一个新的配置提供程序来简化这种配置—@Dumitru“创建appsettings.envname.json并重复整个过程!!!Serilog json块再次使用MinimumLevel和pathFormat的新值-这可能是您能做的最糟糕的事情-这不是真的。您只需要指定更改的设置。