using System.Core.Extensions; using System.Extensions; namespace AspNetCore.Extensions.Middleware; public sealed class HeaderLoggingMiddleware : IMiddleware { private readonly ILogger logger; public HeaderLoggingMiddleware( ILogger logger) { this.logger = logger.ThrowIfNull(); } public async Task InvokeAsync(HttpContext context, RequestDelegate next) { var scopedLogger = this.logger.CreateScopedLogger(nameof(this.InvokeAsync), string.Empty); scopedLogger.LogDebug(string.Join("\n", context.Request.Headers.Select(kvp => $"{kvp.Key}: {string.Join(",", kvp.Value.OfType())}"))); await next(context); } }