默认情况下,您所说的任何严重性为“调试”或更高的日志条目都应发送到您的接收器(控制台、文件等)。
这是类似的行为微软关于日志记录的文档 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.*
命名空间。