首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过IHttpClientFactory阻止IHttpClientFactory登录到ILogger?

如何通过IHttpClientFactory阻止IHttpClientFactory登录到ILogger?
EN

Stack Overflow用户
提问于 2018-08-29 18:14:52
回答 2查看 1.2K关注 0票数 2

我正在编写一个自定义ILoggerProvider,它使用通过配置的IHttpClientFactory获得的HttpClient实例在HTTP上转发日志消息

代码语言:javascript
复制
public void ConfigureServices(IServiceCollection services)
{
    services.AddHttpClient();
}

当我的ILoggerProvider转发一批日志时,它的HttpClient生成额外的日志消息,然后转发.导致堆栈溢出。

如何仅禁止--仅--在执行转发的方法的有限范围内生成的消息,以便从HttpClient或其他可能在该范围内记录的日志中筛选出日志?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-29 20:47:30

通过HttpClient创建的命名实例使用包含这些名称的日志类别。然后,发送到此转发提供程序的日志可以被过滤掉。

如果像这样创建了一个命名的HttpClient

代码语言:javascript
复制
httpClientFactory.CreateClient(nameof(MyForwardingLoggerProvider))))

然后,筛选出日志的一种可能方法是,当这个HttpClient实例试图在categoryName中创建具有提供程序名称的ILogger时,返回一个"no-op“实例。

代码语言:javascript
复制
ILogger ILoggerProvider.CreateLogger(String categoryName)
{
    if (categoryName.StartsWith($"System.Net.Http.HttpClient.{nameof(MyForwardingLoggerProvider)}."))
    {
        // Ignores all logs
        return NoopLogger.Instance;
    }
    else
    {
        // Performs log forwarding
        return new MyForwardingLogger(categoryName);
    }
}
票数 3
EN

Stack Overflow用户

发布于 2018-08-29 18:18:37

我正在编写一个自定义ILoggerProvider,它使用通过配置的IHttpClientFactory获得的HttpClient实例在HTTP上转发日志消息:

不要这样做,使用另一个与工厂无关的HttpClient。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52083818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档