在ASP.NET Core应用程序中,我有一个appsettings.json
配置文件,该文件使用JSON数组配置设置的集合。
如何使用环境变量覆盖数组对象之一的设置?
背景
我使用Serilog在ASP.NET应用程序的核心,并使用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 App Service时通过环境变量来执行此操作,因此,我将通过Azure管理门户使用App设置(这些被实现为环境变量)。
我可以通过添加名称为的环境变量和应用程序名称来轻松设置MinimumLevel。Serilog:MinimumLevel
Serilog:Properties:Application
用数组指定设置的格式是什么?
在调试器中查看配置后,我找到了答案。
Serilog__WriteTo__0__Args__path
(所有平台)Serilog:WriteTo:0:Args:path
(视窗)Serilog--WriteTo--0--Args--path
(来自Azure Key Vault)注意:ASP.NET Core文档中的配置现在涵盖了这一点。
因此,我需要使用数组索引(从零开始),就好像它是一个名称一样。
这也是调试器的屏幕截图,(感谢注释中的Victor Hurdugaci),单元测试是查找示例的好地方。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句