将特定命名空间添加到 appsettings.json - Serilog ASP.NET Core 3.1

Add Specfic Namespace to appsettings.json - Serilog ASP.NET Core 3.1

我按照教程让您在 appsettings.json 中设置所有 Serilog 配置;但是,我无法让 WebAppLogger.Startup 输出任何消息:

{
  "AllowedHosts": "*",
  "Serilog": {
    "Using": [],
    "MinimumLevel": {
      "Default": "Warning",
      "WebAppLogger.Startup": "Verbose",
      "Override": {
        "Microsoft": "Warning",
        "System": "Warning"
      }
    },
    "Enrich": [ "FromLogContext", "WithMachineName", "WithProcessId", "WithThreadId" ],
    "WriteTo": [
      { 
        "Name": "Console",
        "Args": {
          "outputTemplate": "{Timestamp:G} {Level} {Message}{NewLine:1}{Exception}"
        }
      },
      {
        "Name": "File",
        "Args": {
          "path": "Logs/log.txt",
          "outputTemplate": "{Timestamp:G} {Level} {Message}{NewLine:1}"
        }
      },
      {
        "Name": "File",
        "Args": {
          "path": "Logs/log.json",
          "formatter": "Serilog.Formatting.Json.JsonFormatter, Serilog"
        }
      }
    ]
  }
}

我尝试添加 "Using": [{"WebAppLogger.Startup": "Verbose"}] 但这会使应用程序崩溃。

我在 Serilog 文档中找不到任何与使用 appsettings.json 有关的内容。

此外,有没有办法完全抑制 MicrosoftSystem 消息?

appsettings.jsonUsing 字段中,您必须指定要使用的接收器。

例如,如果您要写入 Console,您应该指定 class 的全名,包括名称空间(在本例中为 Serilog.Sinks.Console),前提是当然,你安装了 NuGet package of the sink

例如:

{
  "Serilog": {
    "Using":  ["Serilog.Sinks.Console"], // <<<<<<<<<<##############
    "MinimumLevel": "Debug",
    "WriteTo": [
      { "Name": "Console" }
    ],
    "Enrich": ["FromLogContext", "WithMachineName", "WithThreadId"],
  }
}

您可以在 GitHub 存储库中查看示例:


您可以使用 Filters (e.g. ByExcluding, ByIncluding). In the sample of the Serilog.Settings.Configuration repo 来抑制 MicrosoftSystem 消息,这里有一个如何通过 appsettings.json.

配置它的示例