无法将 Serilog 配置转换为 appsettings.json

Trouble converting Serilog Configuration to appsettings.json

我在 c# 上有这段代码,它可以很好地完成工作。 来自 CSPConsumersLayer 的每个日志都记录在一个特定的文件 (ConsumerLog.txt) 上,同时,每个其他日志都记录在另一个文件 (Log.txt) 上。 这是我想要在 appsettings.json

中实现的 C# 配置
Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.WriteTo.Logger(lg => lg.Filter.ByIncludingOnly(Matching.FromSource(nameof(CSPConsumersLayer))).WriteTo.File(@"..\Logs\ConsumerLog.txt", LogEventLevel.Information, "{Timestamp:G} [{Level}] {ThreadId} {MachineName} {Message} {Exception}{NewLine}", rollOnFileSizeLimit: true, fileSizeLimitBytes: 104857600))
.WriteTo.Logger(lg => lg.Filter.ByExcluding(Matching.FromSource(nameof(CSPConsumersLayer))).WriteTo.File(@"..\Logs\Log.txt", LogEventLevel.Information, "{Timestamp:G} [{Level}] {User} {IP} {ThreadId} {MachineName} {SourceContext} {RequestId} {Message} {Exception}{NewLine}", rollOnFileSizeLimit: true, fileSizeLimitBytes: 104857600))
.CreateLogger();

当我尝试在 Json 上转换它时,好像它不起作用

--这是我想出来的JSON,但是不能正常工作

"Serilog": {
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Warning",
        "System": "Warning",
        "Microsoft.Hosting.Lifetime": "Information"
      }
    },
    "WriteTo": [
      { "Name": "Console" },
      {
        "Name": "Logger",
        "Args": {
          "configureLogger": {
            "Filter": [
              {
                "Name": "ByIncludingOnly",
                "Args": {
                  "expression": "StartsWith(SourceContext, 'CSPConsumersLayer')"
                }
              }
            ],
            "WriteTo": [
              {
                "Name": "File",
                "Args": {
                  "path": "../Logs/ConsumerLog.log",
                  "outputTemplate": "{Timestamp:G} [{Level}] {User} {IP} {ThreadId} {MachineName} {SourceContext} {RequestId} {Message} {Exception}{NewLine}",
                  "rollOnFileSizeLimit": "true",
                  "fileSizeLimitBytes": 104857600
                }
              }
            ]
          }
        }
      },
      {
        "Name": "Logger",
        "Args": {
          "configureLogger": {
            "Filter": [
              {
                "Name": "ByExcluding",
                "Args": {
                  "expression": "StartsWith(SourceContext, 'CSPConsumersLayer')"
                }
              }
            ],
            "WriteTo": [
              {
                "Name": "File",
                "Args": {
                  "path": "../Logs/Log.log",
                  "outputTemplate": "{Timestamp:G} [{Level}] {User} {IP} {ThreadId} {MachineName} {SourceContext} {RequestId} {Message} {Exception}{NewLine}",
                  "rollOnFileSizeLimit": "true",
                  "fileSizeLimitBytes": 104857600
                }
              }
            ]
          }
        }
      }
    ],
    "Enrich": [
      "FromLogContext",
      "WithMachineName"
    ]
  }

答案就这么简单。如果你想对appsettings.json进行过滤,你应该包含一个名为的数据包'serilog-extensions-logging'.