首页 > 解决方案 > 通过注释“LogLevel”属性显示日志信息

问题描述

我对.Net Core 很陌生。我正在使用默认的 ILogger 提供程序进行基本的信息记录。最初我的AppSetting.json没有被注释并且能够看到我写的日志。

{
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    }
  },
  "AllowedHosts": "*"
} 

后来,我评论了这些LogLevel属性并在 Krestel 服务器上运行了应用程序。然后我仍然可以在控制台中看到记录的信息。

应用设置.json

{
  "Logging": {
    //"LogLevel": {
    //  "Default": "Debug",
    //  "System": "Information",
    //  "Microsoft": "Information"
    //}
  },
  "AllowedHosts": "*"
}

程序.cs

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .ConfigureLogging((context, logging)
                    =>
                {
                    logging.ClearProviders();
                    logging.AddConfiguration(context.Configuration.GetSection("Logging"));
                    logging.AddConsole();
                })
                .UseStartup<Startup>();

HomeController.cs中的示例日志记录方法

public void LogExceptionToConsole()
        {
            _logger.LogError("This is raised by logger information");
        }

安慰

在此处输入图像描述

为什么会出现这种行为?如果这是行为,为什么它被设计成这样?谁能给我解释一下。

提前致谢

标签: asp.net-coreasp.net-core-mvcasp.net-core-2.1

解决方案


ASP.NET Core 定义了以下日志级别,此处按严重性从低到高排序:

Trace = 0 (Disabled by default)
Debug = 1 
Information = 2
Warning = 3
Error = 4
Critical = 5

如果在应用程序(startup.cs 或 program.cs 或 appsettings.json 或 appsettings.development.json)中没有为 LogCategory 设置 LogLevel,则默认情况下,Minimum LogLevel 设置为 Information。

因此,在您的示例中,将记录错误,因为它高于默认的最小 LogLevel。

您可以参考此链接了解更多详情


推荐阅读