我的asp.net core 2.x应用程序有典型的日志记录需求:
- 在生产环境中使用Application Insight,
- 在开发环境中使用控制台和调试记录器,
- 基于类别和日志级别设置一些过滤器。
现在我至少看到了三种不同的API来配置日志记录:
Program.cs中的
WebHostBuilder.ConfigureLogging()
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(); }
将
ILoggerFactory
注入到Startup.Configure
方法中:在 Startup.ConfigureServices 中:
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));
}
public void ConfigureServices(IServiceCollection services)
{
services.AddLogging(logging =>
{
logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
logging.AddConsole();
logging.AddDebug();
logging.AddAzureWebAppDiagnostics();
}
}
什么是它们之间的区别?何时使用哪个?