启用 Microsoft.AspNetCore 命名空间的 DEBUG 级别日志

Posted

技术标签:

【中文标题】启用 Microsoft.AspNetCore 命名空间的 DEBUG 级别日志【英文标题】:Enable DEBUG level logs of the Microsoft.AspNetCore namespace 【发布时间】:2021-10-28 14:45:18 【问题描述】:

我在我的 ASP.net Core 应用程序中使用log4net,并具有以下配置:

// Program.cs
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .ConfigureLogging((logging) => 
            logging.ClearProviders();
            logging.AddLog4Net();
        ).UseStartup<Startup>();

我的配置:

<log4net>
    <appender name="Console" type="log4net.Appender.ConsoleAppender">
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%-5date %-5level [%thread] %type.%method:%line - %message%newline" />
        </layout>
    </appender>
    
    <!-- log everything coming from AspNetCore -->
    <logger name="Microsoft.AspNetCore" additivity="false">
        <level value="Debug" />
        <appender-ref ref="Console" />
    </logger>
    
    <root>
        <level value="Info" />
        <appender-ref ref="Console" />
    </root>
</log4net>

我想要达到的目标:

禁用我在 Azure 应用服务中看到的日志消息(许多 HTTP GET 和 HTTP POST 日志,可能来自 IIS 日志) 拥有来自Microsoft.AspNetCore 的任何内容的调试级别日志

我错过了什么?如果我使用 log4net,是否还需要 appsettings.json 文件中的“日志记录”部分?如果我添加以下内容,我将能够看到日志,但为什么需要它?这不应该从log4net.conf 文件中控制吗?

"Logging": 
  "LogLevel": 
     "Microsoft": "Debug"
  

【问题讨论】:

【参考方案1】:

您必须在appsettings.Development.json 中考虑到低于开发版本信息级别的日志记录级别消息,如documentation 中指定的那样,如下所示:


     "Logging": 
         "LogLevel": 
             "Default": "Debug",
             "...":"..."
          
     

见here

默认情况下会在 Asp.net 核心应用程序中生成 appsettings.json 文件。

日志配置通常由 appsettings.Environment.json 文件的 Logging 部分提供。 appsettings.Development.json 文件由 ASP.NET Core Web 应用模板生成:


    "Logging": 
        "LogLevel": 
            "Default": "Information",
            "Microsoft": "Debug",
            "Microsoft.Hosting.Lifetime": "Information"
          
     

日志记录类别是

如果未设置"default"日志级别,则默认日志级别值为Information.

"Microsoft" 类别日志在日志级别 Debug 及更高级别。

"Microsoft.Hosting.Lifetime" 类别的日志级别为“信息”及更高级别。

日志级别如下:

Trace = 0、Debug = 1、Information = 2、Warning = 3、Error = 4、Critical = 5、None = 6。

参考here for more info

检查here 是否禁用 IIS 日志

【讨论】:

以上是关于启用 Microsoft.AspNetCore 命名空间的 DEBUG 级别日志的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft.AspNetCore.SpaServices.Extensions 的文档在哪里?

NETSDK1073:无法识别 FrameworkReference 'Microsoft.AspNetCore.App'

如何选择正确的 Microsoft.AspNetCore.Authentication 替代方案

未找到 Microsoft.AspNetCore.Antiforgery

Microsoft.AspNetCore.Routing路由

Microsoft.AspNetCore.Authentication.Certificate.CertificateAuthenticationHandler 证书验证失败