ILoggerFactory 与 serviceCollection.AddLogging

我的 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();

    }

}

那些有什么区别?什么时候用哪个?


素胚勾勒不出你
浏览 469回答 2
2回答

繁花不似锦

第三种用法ConfigureServices是WebHostBuilder.&nbsp;和第一个用途ConfigureLogging是一个IHostBuilder在的扩展方法HostingHostBuilderExtensions。他们都调用IServiceCollection的扩展方法AddLogging的LoggingServiceCollectionExtensions下Microsoft.Extensions.Logging包。该AddLogging方法首先尝试将两个单ILoggerFactory和ILogger<>和的枚举LoggerFilterOptions。然后执行 logging(&nbsp;ILoggingBuilder) 的操作,最后调用AddProvider方法添加这些提供程序(控制台、Azure)实现的日志提供程序并调用SetMinimumLevel添加LoggerFilterOptions第二种方法直接将日志提供程序添加到LoggerFactory.&nbsp;并且在调用LoggerFactory日志记录方法时调用这些提供程序。至于订单,第二个和第三个方法是由WebHostBuilder的UseStartup<TStartup>方法调用的
打开App,查看更多内容
随时随地看视频慕课网APP