我使用的是EF Core,它记录了很多信息" info"应用程序启动时的级别消息我要过滤掉。 in their docs暗示指定类别的过滤规则应与从该类别开始的所有类别匹配(即"Microsoft"
匹配"Microsoft*"
。)
我的应用程序通过CreateDefaultWebBuilder
设置了默认日志记录,因此我将以下内容放入appsettings.json
:
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning",
"Microsoft": "Warning"
}
}
与我的期望相反,这不起作用。但是,以下做了:
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning",
"Microsoft.EntityFrameworkCore.Migrations": "Warning",
"Microsoft.EntityFrameworkCore.Database.Command": "Warning",
"Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager": "Warning",
"Microsoft.EntityFrameworkCore.Infrastructure": "Warning"
}
}
我做错了什么?当然,我不应该明确列出每个类别吗?
答案 0 :(得分:2)
默认的ASP.NET Core模板已同时包含appsettings.json
和appsettings.Development.json
。后一个文件是特定于环境的文件,如果您在Development
模式下运行,它将在默认之上应用。
配置密钥"Microsoft"
将适用于所有Microsoft.*
命名空间,这是正确的。但只有当没有更具体的配置时,即最具体的配置才会获胜。
默认开发设置文件会将Microsoft
前缀设置为Information
,默认设置为Debug
。这将覆盖您在appsettings.json
中指定的内容,因此Microsoft
的有效级别仍为默认Information
。只有在使用更具体的命名空间时,才能从开发设置配置中覆盖该设置。
最后,您应该确保编辑正确的文件。 appsettings.json
应包含适用于任何环境的配置。这些基本上应该是生产默认值。如果您只想在开发期间使用不同的配置,则应使用appsettings.Development.json
。所以你可能想在这里编辑它。