/// <summary> /// Log the request and response. /// </summary> /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { string requestCid; string responseCid; if (this.isIncomingMessageHandler) { requestCid = AdoptCorrelationId(request.Headers); } else { requestCid = SetCorrelationId(request.Headers); } bool ignore = this.urlIgnorers != null && this.urlIgnorers.Any(ignorer => request.RequestUri.ToString().IndexOf(ignorer, StringComparison.OrdinalIgnoreCase) >= 0); if (ignore) { return(await SendAndLogAsync(request, cancellationToken).ConfigureAwait(false)); } string localMessageId = Guid.NewGuid().ToString(); string requestUriText = request.RequestUri.ToString(); string requestHeadersText = GetHeadersText(request.Headers); if (request.Content != null) { requestHeadersText = String.Join( Environment.NewLine, requestHeadersText, GetHeadersText(request.Content.Headers)); } string requestBodyText = await GetBodyText(request.Content).ConfigureAwait(false); Log.Info(new CallerInfo(), logContext, "|| correlationId={0} || local.msgid={1} ||{2}{3}:: {4} {5}{6}{7}{8}{9}{10}$$END$$", requestCid, localMessageId, Environment.NewLine, this.isIncomingMessageHandler ? "Incoming" : "Outgoing", request.Method.ToString(), requestUriText, Environment.NewLine, requestHeadersText, Environment.NewLine, requestBodyText, Environment.NewLine); Stopwatch stopwatch = Stopwatch.StartNew(); HttpResponseMessage response = await base.SendAsync(request, cancellationToken).ConfigureAwait(false); Log.Info( new CallerInfo(), logContext, "{0} HTTP request with Local id={1} took {2}ms.", this.isIncomingMessageHandler ? "Incoming" : "Outgoing", localMessageId, stopwatch.ElapsedMilliseconds); if (this.isIncomingMessageHandler) { responseCid = SetCorrelationId(response.Headers); } else { responseCid = AdoptCorrelationId(response.Headers); } this.WarnIfDifferent(requestCid, responseCid); HttpStatusCode statusCode = response.StatusCode; string responseUriText = request.RequestUri.ToString(); string responseHeadersText = GetHeadersText(response.Headers); if (response.Content != null) { responseHeadersText = String.Join( Environment.NewLine, responseHeadersText, GetHeadersText(response.Content.Headers)); } string responseBodyText = await GetBodyText(response.Content).ConfigureAwait(false); Log.Info(new CallerInfo(), logContext, "|| correlationId={0} || statuscode={1} || local.msgid={2} ||{3}Response to {4}:: {5} {6}{7}{8} {9}{10}{11}{12}{13}{14}$$END$$", CorrelationId.GetCurrentId(), statusCode, localMessageId, Environment.NewLine, this.isIncomingMessageHandler ? "incoming" : "outgoing", request.Method.ToString(), responseUriText, Environment.NewLine, ((int)response.StatusCode).ToString(), response.StatusCode.ToString(), Environment.NewLine, responseHeadersText, Environment.NewLine, responseBodyText, Environment.NewLine); return(response); }