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

时间:2019-05-09 03:28:42

标签: c# logging configuration scope .net-core-2.2

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

我将设置等注入到像这样在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,我尝试过类似上述操作,但它不起作用,我在哪里出错了?

1 个答案:

答案 0 :(得分:0)

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