private async Task LogDebugAsync(HttpHeaders headers, HttpContent content) { var builder = new StringBuilder(); builder.AppendLine("Headers"); builder.AppendLine("---------------------------------"); foreach (var header in headers.Concat(content?.Headers ?? Enumerable.Empty <KeyValuePair <string, IEnumerable <string> > >())) { foreach (var value in header.Value) { builder.AppendLine($"{header.Key}: {value}"); } } builder.AppendLine("---------------------------------"); if (content != null) { builder.AppendLine("Body"); builder.AppendLine("---------------------------------"); using (var stream = new MemoryStream()) { await content.CopyToAsync(stream); using (var reader = new StreamReader(stream)) { var body = await reader.ReadToEndAsync(); builder.AppendLine(body); } } builder.AppendLine("---------------------------------"); } _inner.LogDebug(builder.ToString()); }
private static string GetLogMessage(HttpHeaders httpHeaders, HttpContentHeaders httpContentHeaders) { var allHttpHeaders = httpContentHeaders == null ? httpHeaders : httpHeaders.Concat(httpContentHeaders); var message = allHttpHeaders .Aggregate(new StringBuilder(), (b, h) => b .AppendLine() .Append(h.Key) .Append(": ") .AppendJoin(", ", h.Value)) .ToString(); return(message); }