我的 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 關注
- 545 瀏覽
添加回答
舉報
0/150
提交
取消