31 lines
843 B
C#
31 lines
843 B
C#
using System;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using MediatR;
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
namespace HN.Infrastructure.Behaviors
|
|
{
|
|
public sealed class LoggerBehavior<TRequest, TResponse> : IPipelineBehavior<TRequest, TResponse>
|
|
{
|
|
private readonly ILoggerFactory _factory;
|
|
|
|
public LoggerBehavior(ILoggerFactory factory)
|
|
{
|
|
_factory = factory;
|
|
}
|
|
|
|
public async Task<TResponse> Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate<TResponse> next)
|
|
{
|
|
var logger = _factory.CreateLogger(request.GetType());
|
|
|
|
logger.LogInformation("Processing request {0} at {1}", request, DateTime.Now);
|
|
|
|
var response = await next();
|
|
|
|
logger.LogInformation("Processed request {0} at {1}", request, DateTime.Now);
|
|
|
|
return response;
|
|
}
|
|
}
|
|
} |