使用 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","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 (将#修改为@)