-
Notifications
You must be signed in to change notification settings - Fork 23
/
Copy pathLoggingBehavior.cs
35 lines (29 loc) · 1.07 KB
/
LoggingBehavior.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
using Application.Common.Interfaces.Services;
using Mediator;
using Serilog;
namespace Application.Common.Behaviors;
public class LoggingBehavior<TMessage, TResponse>(ILogger logger, ICurrentUser currentUser)
: MessagePreProcessor<TMessage, TResponse>
where TMessage : notnull, IMessage
{
protected override ValueTask Handle(TMessage message, CancellationToken cancellationToken)
{
string requestName = typeof(TMessage).Name;
Ulid? id = currentUser.Id;
const string replacePhrase = "for user {userId}";
string loggingMessage =
"\n\n Incomming request: {Name} " + replacePhrase + " with payload \n {@Request} \n";
List<object> parameters = [requestName, id, message];
if (id == null)
{
loggingMessage = loggingMessage.Replace(
$"{replacePhrase}",
"for anonymous",
StringComparison.Ordinal
);
parameters.RemoveAt(1);
}
logger.Information(loggingMessage, [.. parameters]);
return default!;
}
}