Код: Выделить всё
public class HttpClientLogger : IHttpClientAsyncLogger
{
private readonly ILogger _logger;
public HttpClientLogger(ILogger logger)
{
_logger = logger;
_logger.LogInformation("httpclient logger initiated");
}
public object? LogRequestStart(HttpRequestMessage request)
{
_logger.LogInformation("My logger hit on : {function}", nameof(LogRequestStart));
return request;
}
public void LogRequestStop(object? context, HttpRequestMessage request, HttpResponseMessage response, TimeSpan elapsed)
{
_logger.LogInformation("My logger hit on : {function}", nameof(LogRequestStop));
}
public void LogRequestFailed(object? context, HttpRequestMessage request, HttpResponseMessage? response, Exception exception,
TimeSpan elapsed)
{
_logger.LogInformation("My logger hit on : {function}", nameof(LogRequestFailedAsync));
}
public ValueTask LogRequestStartAsync(HttpRequestMessage request,
CancellationToken cancellationToken = new CancellationToken())
{
_logger.LogInformation("My logger hit on : {function}", nameof(LogRequestStartAsync));
return ValueTask.FromResult(request);
}
public ValueTask LogRequestStopAsync(object? context, HttpRequestMessage request, HttpResponseMessage response,
TimeSpan elapsed, CancellationToken cancellationToken = new CancellationToken())
{
_logger.LogInformation("My logger hit on : {function}", nameof(LogRequestStopAsync));
return ValueTask.CompletedTask;
}
public ValueTask LogRequestFailedAsync(object? context, HttpRequestMessage request, HttpResponseMessage? response,
Exception exception, TimeSpan elapsed, CancellationToken cancellationToken = new CancellationToken())
{
_logger.LogInformation("My logger hit on : {function}", nameof(LogRequestFailedAsync));
return ValueTask.CompletedTask;
}
}
Код: Выделить всё
Host.CreateDefaultBuilder(args)
.ConfigureLogging((context, loggingBuilder) =>
{
var logger = new LoggerConfiguration()
.ReadFrom.Configuration(context.Configuration).CreateLogger();
loggingBuilder.AddSerilog(logger);
})
.ConfigureServices(services =>
{
services.AddHttpClient("PartoHttpClient", client =>
{
client.Timeout = TimeSpan.FromSeconds(150);
}).RemoveAllLoggers()
.AddLogger().AddPolicyHandler(GetRetryPolicy());
};
Как мне использовать HTTP-клиент инфраструктура регистрации?
Подробнее здесь: https://stackoverflow.com/questions/781 ... se-details