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 回答
在查看调试器中的配置后,我找到了答案 .
Serilog:WriteTo:0:Args:path
所以我需要使用数组索引(基于零),就好像它是一个名称 .
在调试器的屏幕截图下面,如果它有帮助,也(感谢评论中的Victor Hurdugaci),unit tests是一个寻找示例的好地方 .