Esempio n. 1
0
        /// <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));
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        /// <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);
            }
        }