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());
        }
示例#2
0
        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);
        }