【文章推荐】HttpClient 定制化日志
Closed this issue · 1 comments
gaufung commented
HttpClient
默认的日志格式是这样的
info: System.Net.Http.HttpClient.my-client.LogicalHandler[100]
Start processing HTTP request GET https://www.google.com
如果想要定制化,可以实现 IHttpClientLogger
接口
public class HttpLogger : IHttpClientLogger
{
private readonly ILogger<HttpLogger> _logger;
public HttpLogger(ILogger<HttpLogger> logger)
{
_logger = logger
}
public void LogRequestFailed(object? context, HttpRequestMessage request, HttpResponseMessage? response, Exception exception, TimeSpan elapsed)
{
}
public object? LogRequestStart(HttpRequestMessage request)
{
}
public void LogRequestStop(object? context, HttpRequestMessage request, HttpResponseMessage response, TimeSpan elapsed)
{
}
}
这样可以将它注册到容器中
service.AddSingleton<IHttpClientLogger, HttpLogger>();
service.AddHttpClient("my-client", client =>
{
client.BaseAddress = new Uri("https://www.google.com");
}).RemoveAllLoggers().AddLogger<IHttpClientLogger>(true);
为了移除默认的日志格式,需要调用 RemoveAllLoggers()
方法。