问题描述
当我想写入基于不同环境的数据库时,我遇到了 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","Args": {
"connectionString": "Server=MyServerInProd\\sqlSERVER;Database=MyDBProdv;user id=ui;password=pw_;ConnectRetryCount=0;MultipleActiveResultSets=true",
我的program.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 即使在生产模式下也采用 appsettings.json 设置而不是 appsettings.production.json
注意 appsettings.production.json 中的其他设置工作正常。只有 serilog 中的设置导致问题
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)