【问题标题】:Disable request logging via HttpClient for single url通过 HttpClient 禁用单个 url 的请求日志记录
【发布时间】:2021-09-22 17:52:38
【问题描述】:

我有一个自己的库,它通过 http 客户端公开健康检查实现:

在我的库中的 StartupExtensions 中:

services.AddHttpClient(Consts.HealthChecksHttpClientName, c =>
{
     c.BaseAddress = new Uri(options.BaseUrl);
     c.DefaultRequestHeaders.Add("Connection", "close");
});

如何关闭健康检查 URL 的默认日志记录?

我知道我可以禁用所有日志:

services.RemoveAll<IHttpMessageHandlerBuilderFilter>();

我不想从不属于该库的所有 http 客户端中删除所有日志 - 只想为我的 http 客户端禁用单个 url。

是否只为指定的 HttpClient 覆盖它? 我不想使用Serilog - 仅使用标准Microsoft.Extensions.Logging

【问题讨论】:

    标签: c# asp.net-core httpclient


    【解决方案1】:

    您的日志过滤器应该取决于我们如何使用HttpClient。例如,像这样使用

    using var weatherHttpClient = new HttpClient()
    // make using here
    

    AFAIK,这种情况下不可能将日志记录与 HttpClient 分开。

    如果我们通过 DI 使用HttpClient,我们可以制作这样的过滤器。

    // Register with DI. I'm just a fan of named HttpClient, use your register as wished
    services.AddHttpClient(nameof(WeatherService), cfg =>
    {
        cfg.Timeout = TimeSpan.FromSeconds(10);
        cfg.BaseAddress = new Uri("https://api.openweathermap.org");
    });
    
    // Using WeatherService class: 
    private readonly HttpClient _httpClient; 
    
    public WeatherService(IHttpClientFactory httpClientFactory)
    {
        _httpClient = httpClientFactory.CreateClient(nameof(WeatherService));
    }
    
    // We can create a logging Filter on Program.cs like
    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureLogging(logging  =>
                {
                    logging.AddFilter((_, category, _) => !category.StartsWith($"System.Net.Http.HttpClient.{nameof(WeatherService)}"));
                })
    

    注册为services.AddHttpClient&lt;WeatherService&gt; 将产生相同的类别名称进行过滤。

    但是我还是觉得有点麻烦……不使用Serilog,你能分享一下为什么拒绝那个的原因吗?

    【讨论】:

      猜你喜欢
      • 2011-06-22
      • 2015-05-21
      • 2018-07-31
      • 2016-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-24
      相关资源
      最近更新 更多