/// <inheritdoc cref="IContextLogger" /> public Task LogInfo(IStopwatch stopwatch) { var request = RequestDetails.From(_context.Request); var response = ResponseDetails.From(_context.Response, stopwatch, _statusCode); return(_httpLogger.LogInfo(request, response)); }
/// <inheritdoc cref="IContextLogger" /> public void LogError(Exception exception, IStopwatch?stopwatch) { _statusCode = 500; var request = RequestDetails.From(_context.Request); var response = ResponseDetails.From(_context.Response, stopwatch, _statusCode); _httpLogger.LogError(exception, request, response); }
/// <inheritdoc /> protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken ct) { var httpLogger = _httpLoggerFactory.Create(_logger); var measure = _measure.StartMeasure(); HttpResponseMessage?response = null; RequestDetails requestDetails = RequestDetails.From(request); ResponseDetails? responseDetails = null; try { await httpLogger.LogRequest(requestDetails); response = await base.SendAsync(request, ct); var stopwatch = measure.StopMeasure(); responseDetails = ResponseDetails.From(response, stopwatch); await httpLogger.LogResponse(requestDetails, responseDetails); return(response); } catch (Exception exception) { var stopwatch = measure.StopMeasure(); httpLogger.LogError( exception, requestDetails, responseDetails ?? ResponseDetails.From(response, stopwatch)); throw; } finally { var stopwatch = measure.StopMeasure(); httpLogger.LogInfo( requestDetails, responseDetails ?? ResponseDetails.From(response, stopwatch)).Wait(ct); } }