指定Serilog日志记录器的更高日志级别

3

我在我的ASP.NET WEB API .NET Core 3应用程序中有多个Serilog的sink。

其中一个是MS SQL,我只想写入错误消息。以下是我的appsettings.json的一部分:

"Serilog": {
    "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.Debug", "Serilog.Sinks.File", "Serilog.Sinks.MSSqlServer" ],
    "MinimumLevel": {
      "Default": "Debug",
      "Override": {
        "Microsoft": "Information",
        "System": "Information"
      }
    },
    "WriteTo": [
      { "Name": "Console" },
      { "Name": "Debug" },
      {
        "Name": "File",
        "Args": {
          "path": "Logs/log_.txt",
          "rollingInterval": "Minute",
          "shared": true
        }
      },
      {
        "Name": "MSSqlServer",
        "Args": {
          "connectionString": "CONNECTIONSTRING",
          "sinkOptionsSection": {
            "tableName": "Logs",
            "schemaName": "EventLogging",
            "autoCreateSqlTable": true,
            "batchPostingLimit": 50,
            "restrictedToMinimumLevel": "Error",
            "period": "0.00:00:30"
          }
        }
      }
    ],
    "Enrich": [ "FromLogContext", "WithMachineName" ]
  }

最终,我在 SQL 日志表中收到了一些信息和调试级别的消息。

上面的配置有什么问题?为什么restrictedToMinimumLevel没有起作用?

如果我想排除低于信息级别的消息,我必须在MinimumLevel部分的Default子部分中设置它。

但是,在这种情况下,我不能为特定的 sink 指定较低级别的消息。例如:

"restrictedToMinimumLevel":"Debug"

不会帮助 - 调试信息不会被写入到 MS SQL 中。

1个回答

3

restrictedToMinimumLevelArgs 的子级。 请查看文档

尝试:

"WriteTo": [
  { "Name": "Console" },
  { "Name": "Debug" },
  {
    "Name": "File",
    "Args": {
      "path": "Logs/log_.txt",
      "rollingInterval": "Minute",
      "shared": true
    }
  },
  {
    "Name": "MSSqlServer",
    "Args": {
      "connectionString": "CONNECTIONSTRING",
      "sinkOptionsSection": {
        "tableName": "Logs",
        "schemaName": "EventLogging",
        "autoCreateSqlTable": true,
        "batchPostingLimit": 50,            
        "period": "0.00:00:30"
      },
      "restrictedToMinimumLevel": "Error",
    }
  }
],

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接