using MediatR; using Microsoft.Extensions.Logging; namespace Application.Behaviors; public sealed class LoggingBehavior(ILogger> logger) : IPipelineBehavior where TRequest : notnull { public async Task Handle( TRequest request, RequestHandlerDelegate next, CancellationToken ct ) { var requestName = typeof(TRequest).Name; logger.LogInformation("[Start] {Request}", requestName); var result = await next(ct); logger.LogInformation("[End] {Request}", requestName); return result; } }