Asp.net core 2.xアプリの一般的なログ要件があります。
これで、ロギングを構成するための少なくとも3つの異なるAPIが表示されます。
WebHostBuilder.ConfigureLogging()
in Program.cs
public static void Main(string[] args)
{
var webHost = new WebHostBuilder()
.ConfigureLogging((hostingContext, logging) =>
{
logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
logging.AddConsole();
logging.AddDebug();
logging.AddAzureWebAppDiagnostics();
})
.UseStartup<Startup>()
.Build();
webHost.Run();
}
Startup.ConfigureメソッドにILoggerFactory
を挿入します。
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory, IServiceProvider serviceProvider)
{
loggerFactory.AddConsole();
loggerFactory.AddAzureWebAppDiagnostics();
loggerFactory.AddApplicationInsights(app.ApplicationServices,
(category, level) => level >= (category == "Microsoft" ? LogLevel.Error : LogLevel.Information));
}
startup.ConfigureServicesで:
public void ConfigureServices(IServiceCollection services)
{
services.AddLogging(logging =>
{
logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
logging.AddConsole();
logging.AddDebug();
logging.AddAzureWebAppDiagnostics();
}
}
それらの違いは何ですか?どちらを使用するか?
3番目は、 ConfigureServices
のパブリックメソッドであるWebHostBuilder
を使用します。そして、最初のものは、 ConfigureLogging
のIHostBuilder
の拡張メソッドの1つであるHostingHostBuilderExtensions
を使用します。
そして、両方ともIServiceCollection
の拡張メソッドAddLogging
in LoggingServiceCollectionExtensions
をMicrosoft.Extensions.Logging
パッケージの下で呼び出します。 AddLogging
メソッドは、最初に2つのシングルトンILoggerFactory
とILogger<>
、およびLoggerFilterOptions
の列挙型を追加しようとします。次に、logging(ILoggingBuilder
)のアクションを実行し、最後に AddProvider
メソッドを呼び出して、これらのプロバイダー(コンソール、Azure)によって実装されるログプロバイダーを追加し、呼び出します SetMinimumLevel
を追加してLoggerFilterOptions
2番目の方法は、ログプロバイダーをLoggerFactory
に直接追加します。また、ロギングメソッドが呼び出されると、これらのプロバイダーはLoggerFactory
で呼び出されます。
注文に関しては、2番目と3番目のメソッドはWebHostBuilder
の UseStartup<TStartup>
メソッドによって呼び出されます。