gpt4 book ai didi

c# - ILoggerFactory 与 serviceCollection.AddLogging 与 WebHostBuilder.ConfigureLogging

转载 作者:IT王子 更新时间:2023-10-29 04:50:29 32 4
gpt4 key购买 nike

我的 asp.net core 2.x 应用程序有典型的日志记录要求:

  • 在生产中使用应用洞察力,
  • 在开发环境中控制台和调试记录器
  • 根据类别和日志级别设置一些过滤器

现在我看到至少三个不同的 API 来配置日志记录:

  1. 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();
    }
  2. ILoggerFactory 注入(inject) Startup.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));
    }
  3. 在 Startup.ConfigureServices 中:

    public void ConfigureServices(IServiceCollection services)
    {
    services.AddLogging(logging =>
    {
    logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
    logging.AddConsole();
    logging.AddDebug();
    logging.AddAzureWebAppDiagnostics();
    }
    }

它们之间有什么区别?什么时候使用哪个?

最佳答案

第三个使用ConfigureServices这是 WebHostBuilder 中的公共(public)方法.第一个使用 ConfigureLogging这是 IHostBuilder 之一 HostingHostBuilderExtensions 中的扩展方法.

他们都称IServiceCollection的扩展方法 AddLogging LoggingServiceCollectionExtensions Microsoft.Extensions.Logging 下包裹。 AddLogging方法首先尝试添加两个单例 ILoggerFactoryILogger<>和一个可枚举的 LoggerFilterOptions .然后执行最终调用 ILoggingBuilder 的日志记录操作(AddProvider)方法来添加由这些提供程序(控制台、Azure)实现的日志提供程序并调用 SetMinimumLevel 添加LoggerFilterOptions

第二种方法直接将日志提供者添加到LoggerFactory .这些提供商在 LoggerFactory 中被调用调用日志记录方法时。

关于订单,第二个和第三个方法由WebHostBuilder调用的 UseStartup<TStartup> 方法。

关于c# - ILoggerFactory 与 serviceCollection.AddLogging 与 WebHostBuilder.ConfigureLogging,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50744024/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com