Aktivieren der Trace-Protokollierung in ASP.NET Core?

Ich kann nicht basice LogTrace(...) Ausgabe in meiner Anwendung. Hier eine repro:

  1. Erstellen Sie eine neue ASP.NET Core-Anwendung mithilfe von Visual Studio 2017.
  2. (Optional) Kommentar aus .UseApplicationInsights() so die repro ist klarer
  3. Ersetzen Sie den code in 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" };
            }
        }
    }
  4. Ändern appsettings.Development.json:

    {
      "Logging": {
        "IncludeScopes": false,
        "LogLevel": {
          "Default": "Trace",
          "System": "Information",
          "Microsoft": "Information"
        }
      }
    }
  5. Ausführen und anzeigen der Debug-Ausgabe

Dies führt zu:

  • Aktuelle Ausgabe:

    Aktivieren der Trace-Protokollierung in ASP.NET Core?

  • Erwartete Ausgabe wäre die "SPUR!" - Nachricht

Habe ich versucht, das individuelle anpassen der Werte in der appsettings.json Datei als gut, aber das hatte keine Wirkung.

Komischerweise, und ändern Sie den Wert in beiden Dateien auf "Error" nicht alles tun, entweder.

Unteren Zeile /Frage

Was muss ich tun, um meine injiziert ILogger<ValuesController> hinsichtlich der logging-Einstellungen, einschließlich Trace Ebene?


Fußnote

Ist hier einige von den relevanten code, der automatisch generiert wird mit den oben genannten repro:

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 Standard:

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }
  }
}
Nur ein heads-up... wird Es wichtige änderungen bezüglich dieses Problems als der 2.0 (credit @Tseng ). Ich aktualisiert meine Antwort entsprechend.

InformationsquelleAutor Jeroen | 2017-05-28

Schreibe einen Kommentar