我正在使用Serilog的MSSQLSERVER接收器,并且在AppSettings.json中描述了所有设置。我阅读了如下:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) {
return WebHost.CreateDefaultBuilder(args)
.UseSerilog((ctx, config) => { config.ReadFrom.Configuration(ctx.Configuration); })
.UseStartup<Startup>();
}
然后,我想修改代码中appsettings.json文件中读取的一些条目。我很难弄清楚如何从文件中读取的配置。然后如何更改MSSQLSERVER汇的特定条目?
具体来说,假设我想从下面的文件中将columnOptionsSection
中的disableTriggers
更改为false
。我该怎么做?
供参考,这是AppSettings的缩写部分。
"Serilog": {
"WriteTo": [
{
"Name": "MSSqlServer",
"Args": {
"connectionString": "User ID=zzz;Password=yyy;...",
"tableName": "LogMe",
"autoCreateSqlTable": false,
"batchPostingLimit": 1000,
"period": "0.00:00:05",
"columnOptionsSection": {
"disableTriggers": true,
"clusteredColumnstoreIndex": false,
...
}
}
}
]
}
首先,用于针对特定配置值的语法如下。
configuration["Serilog:WriteTo:0:Args:columnOptionsSection:disableTriggers"]
现在让我们更改配置中的值。我认为您无法直接在配置实例上执行此操作,但是您可以提供新的配置层,从JSON文件中覆盖值。
var overrides = new Dictionary<string, string>
{
{ "Serilog:WriteTo:0:Args:columnOptionsSection:disableTriggers", "False" },
};
var configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddInMemoryCollection(overrides)
.Build();
如果您要打印configuration["Serilog:WriteTo:0:Args:columnOptionsSection:disableTriggers"]
,则会从覆盖率获得False
,而不是从JSON文件中获得True
。
这对您有用吗?