Как использовать IHttpClientAsyncLogger для регистрации подробностей HTTP-запроса/ответа?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как использовать IHttpClientAsyncLogger для регистрации подробностей HTTP-запроса/ответа?

Сообщение Anonymous »

В приложении My Worker мне нужно регистрировать все исходящие запросы и входящие ответы. Я обнаружил, что существует IHttpClientAsyncLogger, который может добавить функцию ведения журнала в нужный httpclient. Итак, я реализовал интерфейс IHttpClientAsyncLogger следующим образом:

Код: Выделить всё

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;
}
}
а затем зарегистрируйте его, как показано ниже, в моей коллекции сервисов в program.cs:

Код: Выделить всё

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-запрос и получает ответ, ни один из методов регистрации не вызывается.
Как мне использовать HTTP-клиент инфраструктура регистрации?

Подробнее здесь: https://stackoverflow.com/questions/781 ... se-details
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • ZKTECO PUSH SDK - Я не получаю http-сообщения о регистрации или регистрации (распознавание лиц)
    Anonymous » » в форуме JAVA
    1 Ответы
    93 Просмотры
    Последнее сообщение Гость
  • ZKTECO PUSH SDK - Я не получаю http-сообщения о регистрации или регистрации (распознавание лиц)
    Anonymous » » в форуме C#
    0 Ответы
    44 Просмотры
    Последнее сообщение Anonymous
  • CreatedAtAction для запроса регистрации регистрации
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • CreatedAtAction для запроса регистрации регистрации
    Anonymous » » в форуме C#
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Какой стек HTTP для использования для клиента, требующего HTTP/1.1, HTTP/2 и HTTP/3
    Anonymous » » в форуме Android
    0 Ответы
    68 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»