dotnet核心日志记录始终显示信息结果

时间:2020-09-16 15:17:30

标签: asp.net-core logging

我正在学习.net核心日志记录。我也阅读了一些博客和文档。 我想知道为什么每次使用以下设置时总是显示“ Microsoft.Hosting.Lifetime”信息日志。

{
  "Logging": {
    "LogLevel": {
      "Default": "Error",
      "Microsoft": "Error",
      "Microsoft.Hosting.Lifetime": "Error",
      "DemoWeb.Controllers.HomeController":  "Error"
    }
  },
  "AllowedHosts": "*"
}

enter image description here

要仔细检查(如果我的appsettings.json工作正常),我在ConfigureService中添加了它。

public void ConfigureServices(IServiceCollection services)
{
    services.AddLogging(config =>
    {
        // clear out default configuration
        config.ClearProviders();

        config.AddConfiguration(Configuration.GetSection("Logging"));
        config.AddDebug();
        config.AddEventSourceLogger();
        config.AddConsole();                
    });
    services.AddControllersWithViews();
}

对于我自己添加的“ HomeController”类,它正在按预期工作。

我只想从控制台日志中删除“ Microsoft.Hosting.Lifetime”。

预先感谢

1 个答案:

答案 0 :(得分:1)

首先,如@KirkLarkin所述,在开发中,appsettings.Development.json配置将覆盖appsettings.json中的值。

有关更多信息,您可以检查:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-3.1#appsettingsjson

要从控制台日志中删除“ Microsoft.Hosting.Lifetime”

在您的项目中,可以启用多个logging providers。如果您只想从 ConsoleLogger 中关闭关于Information的{​​{1}}级日志,则可以尝试应用以下日志过滤器规则。

"Microsoft.Hosting.Lifetime"

您可以通过configuring logging为该特定提供商实现相同的目标。

services.AddLogging(config =>
{
    // clear out default configuration
    config.ClearProviders();

    config.AddConfiguration(Configuration.GetSection("Logging"));

    //add log filter for ConsoleLoggerProvider
    config.AddFilter<ConsoleLoggerProvider>("Microsoft.Hosting.Lifetime", LogLevel.Error);

    config.AddDebug();
    config.AddEventSourceLogger();
    config.AddConsole();
});