【发布时间】:2016-10-06 01:19:00
【问题描述】:
在一个 ASP.NET Core 应用程序中,我有一个 appsettings.json 配置文件,它使用 JSON 数组来配置一组设置。
如何使用环境变量覆盖其中一个数组对象的设置?
背景
我在 ASP.NET Core 应用程序中使用 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 应用服务时通过环境变量执行此操作,因此我将通过 Azure 管理门户使用应用设置(这些被实现为环境变量)。
我可以通过添加名称为Serilog:MinimumLevel 和应用程序名称Serilog:Properties:Application 的环境变量轻松设置MinimumLevel。
用数组指定设置的格式是什么?
【问题讨论】:
-
我遇到了同样的问题 - 我无法忍受名称、冒号和数组索引的魔力 (Serilog:WriteTo:0:Args:path),几个月前我写了一个新的配置提供程序使这种配置更容易 - github.com/dsbenghe/NotMicrosoft.Configuration
-
@Dumitru "创建 appsettings.envname.json 并重复整个过程!!! Serilog json 块再次使用 MinimumLevel 和 pathFormat 的新值 - 这可能是你能做的最糟糕的事情" - 这是不对。您只需要指定更改的设置。
标签: configuration asp.net-core .net-core serilog