在 appsettings.json 日志记录上下文中,MinimumLevel 和 Override 意味着什么?

2024-03-12

我正在查看 appsettings.jsonSerilog 示例项目 https://github.com/serilog/serilog-docker/blob/master/web-sample/src/appsettings.json,其中包含以下代码片段:

"MinimumLevel": {
  "Default": "Debug",
  "Override": {
    "System": "Information",
    "Microsoft": "Information"
  }
}

在这种情况下,这样做的目的是什么Override? The System and Microsoft条目中没有父级设置MinimumLevel节点,那么它覆盖的是什么?

除非我完全误解了目的Override.


默认情况下,您所说的任何严重性为“调试”或更高的日志条目都应发送到您的接收器(控制台、文件等)。

这是类似的行为微软关于日志记录的文档 https://learn.microsoft.com/en-us/aspnet/core/fundamentals/logging/?view=aspnetcore-2.2#configuration:

例如,日志记录配置通常由Logging应用程序设置文件的部分。以下示例显示了典型的 appsettings.Development.json 文件的内容:

{
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    },
    "Console": {
      "IncludeScopes": true
    }
  }
}

[...]

The LogLevel下的财产Logging指定所选类别的最低记录级别。在示例中,System and Microsoft类别 登录Information级别,所有其他人登录Debug level.

覆盖部分用于更改给定名称空间类型的最低日志级别。在您的示例中,这意味着来自System.* or Microsoft.*命名空间必须是信息或更高级别才能显示。

通常你会想看到Debug日志条目你的代码,但是更高的级别(例如Information or Warning)表示“不是您的代码”,例如 Microsoft 和 System.

您也可以使用代码来代替将此配置放入配置文件中:

WebHost.CreateDefaultBuilder(args)
    .UseStartup<Startup>()
    .UseSerilog((ctx, cfg) =>
    {
        cfg.ReadFrom.Configuration(ctx.Configuration)
            .MinimumLevel.Debug()
            .MinimumLevel.Override("Microsoft", LogEventLevel.Information);
    })
    .Build();

Code from kimsereyblog.blogspot.com https://kimsereyblog.blogspot.com/2018/02/logging-in-asp-net-core-with-serilog.html

他们对该过程的解释是:

从示例中我们看到我们可以配置默认的最低日志级别.MinimumLevel.Debug()。我们还可以覆盖某些命名空间的默认值,例如,在这里我们设置了最低日志级别Microsoft命名空间到Information。这将阻止 ASP.NET Core 记录所有调试日志,同时保留我们自己的调试日志。

另一种解释,来自nblumhardt.com https://nblumhardt.com/2016/07/serilog-2-minimumlevel-override/:

第一个参数Override是源上下文前缀,通常与与记录器关联的类的命名空间限定类型名称相匹配。

...

那么,上述配置的效果是仅在等于或高于Warning当记录器由 a 中的类型拥有时的级别Microsoft.*命名空间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 appsettings.json 日志记录上下文中,MinimumLevel 和 Override 意味着什么? 的相关文章

随机推荐