using MediatR; using Microsoft.Extensions.Logging; using QRCodeService.Extensions; using System.Linq; using System.Threading; using System.Threading.Tasks; namespace QRCodeService.Application.Behaviors { public class LoggingBehavior : IPipelineBehavior { private readonly ILogger> _logger; public LoggingBehavior(ILogger> logger) => _logger = logger; public async Task Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate next) { _logger.LogInformation("----- Handling command {CommandName} ({@Command})", request.GetGenericTypeName(), request); var response = await next(); _logger.LogInformation("----- Command {CommandName} handled - response: {@Response}", request.GetGenericTypeName(), response); return response; } } }