namespace Indotalent.ConfigBackEnd.Behaviours; using Indotalent.ConfigBackEnd.Interfaces; using MediatR.Pipeline; using Microsoft.Extensions.Logging; public class LoggingBehaviour : IRequestPreProcessor where TRequest : notnull { private readonly ILogger _logger; private readonly ICurrentUserService _currentUserService; public LoggingBehaviour(ILogger logger, ICurrentUserService currentUserService) { _logger = logger; _currentUserService = currentUserService; } public Task Process(TRequest request, CancellationToken cancellationToken) { var requestName = typeof(TRequest).Name; var userId = _currentUserService.UserId ?? string.Empty; var userName = _currentUserService.UserName ?? string.Empty; _logger.LogInformation("Request: {Name} {UserId} {UserName} {@Request}", requestName, userId, userName, request); return Task.CompletedTask; } }