it-swarm.com.de

Wie werden veraltete ILoggerFactory-Methoden repariert?

Ich habe mein Projekt auf .NET Core 2.2.x aktualisiert und eine veraltete Warnung bezüglich des folgenden Codes erhalten - beide Zeilen:

public void Configure(IApplicationBuilder app, 
                      IHostingEnvironment env, 
                      ILoggerFactory loggerFactory) 
  {
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));

Der zu korrigierende Vorschlag lautet The recommended alternative is AddConsole(this ILoggingBuilder builder). Ich dachte, das ist was ich benutze.

Was vermisse ich hier?

29
AngryHacker

Ich hatte heute das gleiche Problem.

Entfernen Sie Ihre Protokollierungskonfiguration aus Startup.cs, wechseln Sie zu Ihrer Program.cs-Datei und fügen Sie Folgendes hinzu:

            var Host = new WebHostBuilder()
                .UseKestrel()
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseIISIntegration()
                .UseStartup<Startup>()
                .ConfigureLogging((hostingContext, logging) =>
                {
                    logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
                    logging.AddConsole();
                    logging.AddDebug();
                })
                .Build();

Dies verwendete den 'Builder', da die Variable 'logging' ein IloggingBuilder ist (während Ihr Code immer noch ILoggerFactory verwendet).

UPDATE: Die andere Methode, die ich gerade ausprobiert habe, ist, in Startup.cs zu bleiben, aber das Protokollmaterial wie folgt von der 'Configure'-Methode zu' ConfigureServices 'zu verschieben:

        public void ConfigureServices(IServiceCollection services)
    {

        services.AddLogging(loggingBuilder =>
        {
            loggingBuilder.AddConfiguration(Configuration.GetSection("Logging"));
            loggingBuilder.AddConsole();
            loggingBuilder.AddDebug();
        });

    }

Vielleicht hält das Program.cs weniger verschmutzt ...

63
Michael Ceber

Die Empfehlung der Dokumentation zur Verwendung von AddConsole(this ILoggingBuilder builder) ist korrekt, aber damit dies funktioniert, müssen Sie einen Verweis auf das NuGet-Paket hinzufügen Microsoft.Extensions.Logging.Console.

5
x5657

Entsprechend dem auf GitHub dafür geöffneten Problem werden die Ersetzungsmethoden bereits aufgerufen, wenn Sie in Ihrer Program.cs-Datei die CreateDefaultBuilder () -Methode verwenden.

https://github.com/aspnet/Docs/issues/9829

Das einzige Problem, das ich habe, ist, dass ich diese nur für Nicht-Produktionsumgebungen aktiviert habe und keine Möglichkeit sehe, dies in Zukunft zu tun.

3
tommytarheel

Mach dir keine Sorgen - das ist das dümmste Ding überhaupt !

Hinweis

Das folgende Codebeispiel verwendet einen ConsoleLoggerProvider-Konstruktor, der in Version 2.2 veraltet ist. In Version 3.0 werden veraltete Protokollierungs-APIs ordnungsgemäß ersetzt. In der Zwischenzeit können Sie die Warnungen ignorieren und unterdrücken.

Für den Fall, dass Sie dachten, Sie hätten vergessen, was veraltet bedeutet - das hatten Sie nicht! Machen Sie sich keine Sorgen und ignorieren Sie es erst einmal - oder unterdrücken Sie die Warnung (sorry, ich habe den Code dafür nicht zur Hand).

(Ich wünschte, sie würden eine bessere Erklärung dafür abgeben, warum dies getan wurde - das meine ich mit dumm.)

3
Simon_Weaver