我的 asp.net core 2.x 应用程序有典型的日志记录要求:在生产中使用应用程序洞察力,开发环境中的控制台和调试记录器根据类别和日志级别设置一些过滤器现在我看到至少三个不同的 API 来配置日志记录:WebHostBuilder.ConfigureLogging()在 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();}注入ILoggerFactoryStartup.Configure 方法: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(); }}那些有什么区别?什么时候用哪个?
2 回答
繁花不似锦
TA贡献1851条经验 获得超4个赞
第三种用法ConfigureServices
是WebHostBuilder
. 和第一个用途ConfigureLogging
是一个IHostBuilder
在的扩展方法HostingHostBuilderExtensions
。
他们都调用IServiceCollection
的扩展方法AddLogging
的LoggingServiceCollectionExtensions
下Microsoft.Extensions.Logging
包。该AddLogging
方法首先尝试将两个单ILoggerFactory
和ILogger<>
和的枚举LoggerFilterOptions
。然后执行 logging( ILoggingBuilder
) 的操作,最后调用AddProvider
方法添加这些提供程序(控制台、Azure)实现的日志提供程序并调用SetMinimumLevel
添加LoggerFilterOptions
第二种方法直接将日志提供程序添加到LoggerFactory
. 并且在调用LoggerFactory
日志记录方法时调用这些提供程序。
至于订单,第二个和第三个方法是由WebHostBuilder
的UseStartup<TStartup>
方法调用的
- 2 回答
- 0 关注
- 468 浏览
添加回答
举报
0/150
提交
取消