web-dev-qa-db-ja.com

廃止されたILoggerFactoryメソッドを修正するには?

プロジェクトを.NET Core 2.2.xにアップグレードすると、次のコードに関する古い警告が表示されました-両方の行:

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

修正する提案はThe recommended alternative is AddConsole(this ILoggingBuilder builder)です。それが私が使っているものだと思った。

ここで何が欠けていますか?

29
AngryHacker

今日も同じ問題がありました。

Startup.csからログ設定を削除し、Program.csファイルに移動して次のようなものを追加します。

            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();

変数 'logging'はIloggingBuilderであるため、これは 'builder'を使用しました(コードはまだILoggerFactoryを使用しています)

更新:私が試したもう1つの方法は、Startup.cs内にとどまることですが、次のように「Configure」メソッドから「ConfigureServices」にロギングのものを移動します。

        public void ConfigureServices(IServiceCollection services)
    {

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

    }

おそらくProgram.csの汚染を抑えます...

63
Michael Ceber

AddConsole(this ILoggingBuilder builder)を使用するドキュメントの推奨事項は正しいですが、それを機能させるには、NuGetパッケージへの参照を追加する必要がありますMicrosoft.Extensions.Logging.Console

5
x5657

このためにGitHubで公開された問題によると、Program.csでCreateDefaultBuilder()メソッドを使用する場合、置換メソッドはすでに呼び出されています。

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

私が持っている唯一の問題は、これらを非本番環境でのみ有効にしていることです。

3
tommytarheel

心配しないでください-これは これまでで最も愚かなこと です!

注意

次のコードサンプルでは、​​バージョン2.2で廃止されたConsoleLoggerProviderコンストラクターを使用しています。廃止されたロギングAPIの適切な置き換えは、バージョン3.0で利用可能になります。それまでの間、警告を無視して抑制しても安全です。

Obsolete の意味を忘れたと思った場合-しなかった!心配する必要はなく、今のところそれを無視するか、警告を抑制します(そのためのコードが手元にないのでごめんなさい)。

(これがなぜ行われたのか、彼らがより良い説明を入れてくれることを望んでいます-それは私が愚かなことを意味するものです)

3
Simon_Weaver