asp.net-core-2.0 - 使用 Net Core 2.2 覆盖 appsettings.production 中的 Serilog 设置
问题描述
当我想根据不同的环境写入数据库时,我遇到了 serilog 的问题。Serilog 覆盖我的 appsettings.production.json 并始终采用 appsettings.json 中的设置,而不是在生产模式下!
我在本地appsettings.json中的代码
"Serilog": {
"Using": [ "Serilog.Sinks.MSSqlServer" ],
"MinimumLevel": {
"Default": "Debug",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
}
},
"WriteTo": {
"Console" : {"Name": "Console"},
"Sql": {
"Name": "MSSqlServer",
"Args": {
"connectionString": "Server=MyServerInDev\\SQLSERVER;Database=MyDBDev;user id=ui;password=pw_;ConnectRetryCount=0;MultipleActiveResultSets=true",
"tableName": "Log",
"autoCreateSqlTable": true
}
}
},
appsettings.production.json
"Serilog": {
"Using": [ "Serilog.Sinks.MSSqlServer" ],
"MinimumLevel": {
"Default": "Warning",
"Override": {
"Microsoft": "Warning",
"System": "Warning"
}
},
"WriteTo": {
"Console" : {"Name": "Console"},
"Sql": {
"Name": "MSSqlServer",
"Args": {
"connectionString": "Server=MyServerInProd\\SQLSERVER;Database=MyDBProdv;user id=ui;password=pw_;ConnectRetryCount=0;MultipleActiveResultSets=true",
"tableName": "Log",
"autoCreateSqlTable": true
}
}
},
我的程序.cs
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", optional: true)
.AddEnvironmentVariables()
.Build();
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.CreateLogger();
我错过了什么?以及为什么 serilog 即使在 prod 模式下也采用 appsettings.json 设置而不是 appsettings.production.json
请注意,appsettings.production.json 中的其他设置工作正常。只有 serilog 中的设置会导致问题
解决方案
找到了。原因是 Serilog 将接收器配置添加到数组中,并且 appsettings 的两个文件中的每一个都只是添加了另一个接收器而不是替换它们。解决方案是明确指出每个接收器的数组索引。答案的学分:nblumhardt。经测试,有效。
"WriteTo": {
"0": {
"Name": "File",
"Args": {
"path": "./logs/myapp-.txt",
"rollingInterval": "Day"
}
}
},
推荐阅读
- matlab - 在 Matlab 中调用 afterEach 后如何获取函数句柄的输出?
- android - 在中文 ROM 中运行前台服务
- xml - 如何解析groovy xml响应
- python - Keras:正确使用 fit_generator、predict_generator 和 evaluate_generator
- html - 如何让孩子成长并包裹在第一个元素之下?
- ruby-on-rails - Rails 接受_nested_attributes_for 和belongs_to。为什么我不能设置id?
- ibm-cloud - IBM Cloud (Bluemix) 无法部署错误 502
- python - 创建一个正态分布的样本,其中数据添加到一个数字
- javascript - 无法使用 javascript 和 angular2+ 将 json 响应从数组转换为对象
- python - 不是“NodeMixin”类型。-Python Anytree