如何为每个命名空间配置 Microsoft.Extensions.Logging.ILogger 级别?

How do I configure Microsoft.Extensions.Logging.ILogger levels per namespace?

我希望能够独立于 Microsoft 配置 Microsoft.AspNetCore.Mvc/DataProtection 等嵌套级别。*,这可能吗?如果可以,我该怎么做? 日志记录有效,我看到当前在调试时看到所有内容,但没有排除任何内容。

我正在将设置等注入到 class 中,该 Program.cs 是这样配置的

var builder = new ConfigurationBuilder().SetBasePath(Environment.CurrentDirectory);

builder.AddJsonFile("appsettings.json", true, true);

var envName = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
if (string.IsNullOrWhiteSpace(envName))
    builder.AddJsonFile($"appsettings.${envName}.json", true);

builder.AddEnvironmentVariables();
builder.AddCommandLine(args);

var configurationRoot = builder.Build();

new WebHostBuilder()
    .UseKestrel(options =>
        { options.Limits.MaxRequestBodySize = null; })
    .UseContentRoot(Directory.GetCurrentDirectory())
    .UseConfiguration(configurationRoot)
    .ConfigureLogging(lb =>
     {
         lb.AddConsole();
         lb.AddDebug();
         lb.SetMinimumLevel(LogLevel.Trace);
     })
    .UseStartup<Startup>()
    .UseIISIntegration()
    .Build()
    .Run();

使用 Startup.cs 注入记录器和配置

public Startup(ILogger<Startup> iLogger, IConfiguration iConfiguration)
{
    _configuration = iConfiguration;
    _logger = iLogger;
    _logger.LogDebug("Configured logger, config and builder.");
}

在 appsettings.json 中使用日志配置,例如

"Logging": {
  "IncludeScopes": true,
  "LogLevel": {
    "Microsoft.AspNetCore.Mvc": "Warning",
    "Microsoft.AspNetCore.DataProtection": "Warning",
    "Default": "Debug"
  }
}

来自 log4j 我会尝试类似上面的方法,但它不起作用,我哪里出错了?

您需要阅读 how to setup a host 页面以了解需要进入 program.cs 代码的内容。这已针对 .Net Core 2.x 进行了更改,并减少了我们加载设置和设置日志记录所需的代码量。