Logging 为什么asp.net核心日志记录不按以开头的类别进行筛选?

Logging 为什么asp.net核心日志记录不按以开头的类别进行筛选?,logging,asp.net-core,entity-framework-core,Logging,Asp.net Core,Entity Framework Core,我使用的是EF Core,它在应用程序启动时记录了很多我想过滤掉的“信息”级别的消息。这意味着指定类别的筛选规则应匹配从该类别开始的所有类别(即“Microsoft”匹配“Microsoft*”) 我的应用程序通过CreateDefaultWebBuilder具有默认的日志设置,因此我在我的appsettings.json中放置了以下内容: "Logging": { "IncludeScopes": false, "LogLevel": { "Default":

我使用的是EF Core,它在应用程序启动时记录了很多我想过滤掉的“信息”级别的消息。这意味着指定类别的筛选规则应匹配从该类别开始的所有类别(即
“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"
    }
}

我做错了什么?当然我不需要明确列出每个类别?

默认的ASP.NET核心模板已经附带了
appsettings.json
appsettings.Development.json
。后一个文件是特定于环境的文件,如果您在
开发
模式下运行,它将应用于默认文件之上

配置密钥
“Microsoft”
将应用于所有
Microsoft.
名称空间,这是正确的。但前提是没有更具体的配置,即最具体的配置将获胜

默认开发设置文件将
Microsoft
前缀设置为
Information
,默认设置为
Debug
。这将覆盖您在
appsettings.json
中指定的内容,因此
Microsoft
的有效级别仍然是默认的
信息。只有在使用更特定的名称空间时,才能从“开发设置”配置覆盖该设置


最后,您应该确保您正在编辑正确的文件
appsettings.json
应包含适用于任何环境的配置。这些基本上应该是生产默认值。当您仅在开发过程中需要不同的配置时,应该使用
appsettings.Development.json
。因此,您可能希望在此处编辑此内容。

请检查,您是否正在运行
Development
,并且您还有一个
appsettings.Development.json
?谢谢。你一针见血。我知道,它有
“微软”:“信息”
。我换错了文件。