在一个ASP.NET核心应用程序中,我有一个appsettings.json
配置文件,它使用一个JSON数组来配置一个设置集合。
如何使用环境变量覆盖数组对象的设置?
背景
我在ASP.NET核心应用程序中使用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 are中,因此我将通过Azure管理门户使用App设置(这些设置作为环境变量实现)。
我可以通过添加一个名为: MinimumLevel和应用程序名称Serilog:Properties:Application
的环境变量来轻松地设置Serilog:MinimumLevel
。
使用数组指定设置的格式是什么?
发布于 2016-06-06 12:20:07
在查看了调试器中的配置之后,我找到了答案。
Serilog__WriteTo__0__Args__path
(所有平台)Serilog:WriteTo:0:Args:path
(视窗)Serilog--WriteTo--0--Args--path
(来源于Azure Key Vault)注意:ASP.NET核中的配置文档现在涵盖了这一点。
因此,我需要使用数组索引(基于零),就好像它是一个名称。
以下是调试器的屏幕截图(感谢注释中的维克托·赫杜加奇 ),单元测试是寻找示例的好地方。
发布于 2022-12-02 19:12:43
我知道这是一条老生常谈,但对于我的问题,我能找到的最相关的一条是:
我的a文件的设置如下:
{
"Settings": {
"UserList": [ "devuser1", "devuser2" ]
}
}
我希望将其放入k8s秘密(因为环境之间的列表会发生变化),因此我将键值对设置为:
Settings__UserList: '[ "devuser1", "devuser2" ]'
但这似乎不起作用。我刚刚意识到我还没有尝试在没有括号的情况下设置它:
Settings__UserList: "devuser1", "devuser2"
如果这不起作用的话,我是否需要像这样设置我的秘密才能真正发挥作用呢?
Settings__UserList__0: "devuser1"
Settings__UserList__1: "devuser2"
我在文档中没有看到涉及这种类型数组值的任何内容。
https://stackoverflow.com/questions/37657320
复制相似问题