LoggingBehavior.cs 665 B

1234567891011121314151617181920212223
  1. using MediatR;
  2. using Microsoft.Extensions.Logging;
  3. namespace Application.Behaviors;
  4. public sealed class LoggingBehavior<TRequest, TResponse>(ILogger<LoggingBehavior<TRequest, TResponse>> logger) : IPipelineBehavior<TRequest, TResponse> where TRequest : notnull
  5. {
  6. public async Task<TResponse> Handle(
  7. TRequest request,
  8. RequestHandlerDelegate<TResponse> next,
  9. CancellationToken ct
  10. ) {
  11. var requestName = typeof(TRequest).Name;
  12. logger.LogInformation("[Start] {Request}", requestName);
  13. var result = await next(ct);
  14. logger.LogInformation("[End] {Request}", requestName);
  15. return result;
  16. }
  17. }