プロジェクトを.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)
です。それが私が使っているものだと思った。
ここで何が欠けていますか?
今日も同じ問題がありました。
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の汚染を抑えます...
AddConsole(this ILoggingBuilder builder)
を使用するドキュメントの推奨事項は正しいですが、それを機能させるには、NuGetパッケージへの参照を追加する必要がありますMicrosoft.Extensions.Logging.Console
。
このためにGitHubで公開された問題によると、Program.csでCreateDefaultBuilder()メソッドを使用する場合、置換メソッドはすでに呼び出されています。
https://github.com/aspnet/Docs/issues/9829
私が持っている唯一の問題は、これらを非本番環境でのみ有効にしていることです。
心配しないでください-これは これまでで最も愚かなこと です!
注意
次のコードサンプルでは、バージョン2.2で廃止されたConsoleLoggerProviderコンストラクターを使用しています。廃止されたロギングAPIの適切な置き換えは、バージョン3.0で利用可能になります。それまでの間、警告を無視して抑制しても安全です。
Obsolete の意味を忘れたと思った場合-しなかった!心配する必要はなく、今のところそれを無視するか、警告を抑制します(そのためのコードが手元にないのでごめんなさい)。
(これがなぜ行われたのか、彼らがより良い説明を入れてくれることを望んでいます-それは私が愚かなことを意味するものです)