我无法在应用程序中获得basiceLogTrace(...)输出。这是一个责备:
使用Visual Studio 2017创建新的ASP.NET核心应用程序。
(可选)注释掉.UseApplicationInsights()以便重新编程更清晰
ValuesController.cs中的代码替换为:

using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;

namespace WebApplication1.Controllers
{
    [Route("api/[controller]")]
    public class ValuesController : Controller
    {
        private readonly ILogger<ValuesController> logger;

        public ValuesController(ILogger<ValuesController> logger)
        {
            this.logger = logger;
        }

        [HttpGet]
        public IEnumerable<string> Get()
        {
            logger.LogError("ERROR!");
            logger.LogWarning("WARN!");
            logger.LogInformation("INFO!");
            logger.LogTrace("TRACE!");
            return new string[] { "value1", "value2" };
        }
    }
}

appsettings.Development.json改为:
{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Trace",
      "System": "Information",
      "Microsoft": "Information"
    }
  }
}

运行并查看调试输出
这将导致:
实际产量:
c# - 如何在ASP.NET Core中启用跟踪日志记录?-LMLPHP
预期的输出将是“trace!”信息也是
我也试过调整appsettings.json文件中的值,但也没有效果。
奇怪的是,将两个文件中的值更改为"Error"也没有任何作用。
底线/问题
我需要做什么才能使注入的ILogger<ValuesController>尊重日志设置,包括Trace级别?
脚注
以下是一些相关代码,这些代码将通过上述重新编程自动生成:
Startup.cs
public class Startup
{
    public Startup(IHostingEnvironment env)
    {
        var builder = new ConfigurationBuilder()
            .SetBasePath(env.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
            .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
            .AddEnvironmentVariables();
        Configuration = builder.Build();
    }

    public IConfigurationRoot Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        // Add framework services.
        services.AddMvc();
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        loggerFactory.AddConsole(Configuration.GetSection("Logging"));
        loggerFactory.AddDebug();

        app.UseMvc();
    }
}

Program.cs
public class Program
{
    public static void Main(string[] args)
    {
        var host = new WebHostBuilder()
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .UseApplicationInsights()
            .Build();

        host.Run();
    }
}

appsettings.json默认值:
{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }
  }
}

最佳答案

从2.0开始中断更改
正如曾在下面评论的,这个答案将从2.0开始过时,您可以在这里找到更多关于这个注释的信息:https://github.com/aspnet/Announcements/issues/238
问题出在哪里…
根据你的方法,我发现了一个问题:

public void Configure(IApplicationBuilder app, IHostingEnvironment env,
    ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug(); // ⇦ you're not passing the LogLevel!

    app.UseMvc();
}

这就是为什么对Configure()文件中的配置集所做的任何更改都不起作用的原因。
未传递任何参数的appsettings.json的默认行为是
添加为loglevel.information或更高版本启用的调试记录器。
如果要显式地将其设置为使用特定的最低日志级别,则可以直接将其传递给.AddDebug()方法。
loggerFactory.AddDebug(LogLevel.Trace);

更多信息可以找到here
将其绑定到配置。
方法1:从配置中获取值。
LogLevel foo = this.Configuration.GetSection("Logging:LogLevel")
    .GetValue<LogLevel>("Default");
loggerFactory.AddDebug(foo);

方法2:使用loglevel的内置对象
(故意遗漏。很明显,这两种方法之间的关系是很亲密的。)
方法3:使用手册(使用配置活页夹)
幻想AddDebug(ILoggerFactory, LogLevel)
var obj = new MyObject();
ConfigurationBinder.Bind(_configuration.GetSection("Logging:LogLevel"), obj);

它将映射到
public class MyObject
{
    public LogLevel Default { get; set; }
    public LogLevel System { get; set; }
    public LogLevel Microsoft { get; set; }
}

所以你可以通过:
loggerFactory.AddDebug(obj.Default);

关于nodes和appsettings.json的特别说明
请注意,配置的分隔符使用ConfigurationBinder
示例::将转到:
"Logging": {
  "IncludeScopes": false,
  "LogLevel": {             ⇦⇦⇦⇦⇦ Here
    "Default": "Debug",
    "System": "Information",
    "Microsoft": "Information"
  }
}

日志级枚举
仅供参考,以下是有效的"Logging:LogLevel"值:
public enum LogLevel
{
    Trace = 0,
    Debug = 1,
    Information = 2,
    Warning = 3,
    Error = 4,
    Critical = 5,
    None = 6,
}

资料来源:
https://docs.microsoft.com/en-us/aspnet/core/api/microsoft.extensions.logging.loglevel#Microsoft_Extensions_Logging_LogLevel

09-12 22:48