using MediatR; using Microsoft.Extensions.Logging; namespace Application.Common.Behaviors; public class LoggingBehaviour : IPipelineBehavior where TRequest : notnull { private readonly ILogger _logger; public LoggingBehaviour(ILogger logger) { _logger = logger; } public async Task Handle(TRequest request, RequestHandlerDelegate next, CancellationToken cancellationToken) { var requestName = typeof(TRequest).Name; try { _logger.LogInformation($"Try executing {requestName} at {DateTime.UtcNow.ToString()}"); return await next(); } catch (Exception ex) { _logger.LogError(ex, $"Error executing {requestName} at {DateTime.UtcNow.ToString()}"); throw; } } }