Skip to content

Commit 5143d0d

Browse files
authored
Merge pull request #14 from Danthar/dev
Cleanup in the seriloglogger to reduce allocations
2 parents b2b8ce7 + 28606b9 commit 5143d0d

File tree

1 file changed

+32
-21
lines changed

1 file changed

+32
-21
lines changed

src/Akka.Logger.Serilog/SerilogLogger.cs

Lines changed: 32 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
using Akka.Event;
1111
using Serilog;
1212
using Akka.Dispatch;
13-
using Akka.Event;
1413

1514
namespace Akka.Logger.Serilog
1615
{
@@ -24,22 +23,6 @@ public class SerilogLogger : ReceiveActor, IRequiresMessageQueue<ILoggerMessageQ
2423
{
2524
private readonly ILoggingAdapter _log = Context.GetLogger();
2625

27-
private void WithSerilog(Action<ILogger> logStatement)
28-
{
29-
var logger = Log.Logger.ForContext("SourceContext", Context.Sender.Path);
30-
logStatement(logger);
31-
}
32-
33-
private ILogger SetContextFromLogEvent(ILogger logger, LogEvent logEvent)
34-
{
35-
logger = logger
36-
.ForContext("Timestamp", logEvent.Timestamp)
37-
.ForContext("LogSource", logEvent.LogSource)
38-
.ForContext("Thread", logEvent.Thread.ManagedThreadId.ToString().PadLeft(4, '0'));
39-
40-
return logger;
41-
}
42-
4326
private static string GetFormat(object message)
4427
{
4528
var logMessage = message as LogMessage;
@@ -58,15 +41,43 @@ private static object[] GetArgs(object message)
5841
: new[] { message };
5942
}
6043

44+
private static ILogger GetLogger(LogEvent logEvent) {
45+
var logger = Log.Logger.ForContext("SourceContext", Context.Sender.Path);
46+
logger = logger
47+
.ForContext("Timestamp", logEvent.Timestamp)
48+
.ForContext("LogSource", logEvent.LogSource)
49+
.ForContext("Thread", logEvent.Thread.ManagedThreadId.ToString().PadLeft(4, '0'));
50+
return logger;
51+
}
52+
53+
private static void Handle(Error logEvent) {
54+
55+
GetLogger(logEvent).Error(logEvent.Cause, GetFormat(logEvent.Message), GetArgs(logEvent.Message));
56+
}
57+
58+
private static void Handle(Warning logEvent) {
59+
GetLogger(logEvent).Warning(GetFormat(logEvent.Message), GetArgs(logEvent.Message));
60+
}
61+
62+
private static void Handle(Info logEvent)
63+
{
64+
GetLogger(logEvent).Information(GetFormat(logEvent.Message), GetArgs(logEvent.Message));
65+
}
66+
67+
private static void Handle(Debug logEvent)
68+
{
69+
GetLogger(logEvent).Debug(GetFormat(logEvent.Message), GetArgs(logEvent.Message));
70+
}
71+
6172
/// <summary>
6273
/// Initializes a new instance of the <see cref="SerilogLogger"/> class.
6374
/// </summary>
6475
public SerilogLogger()
6576
{
66-
Receive<Error>(m => WithSerilog(logger => SetContextFromLogEvent(logger, m).Error(m.Cause, GetFormat(m.Message), GetArgs(m.Message))));
67-
Receive<Warning>(m => WithSerilog(logger => SetContextFromLogEvent(logger, m).Warning(GetFormat(m.Message), GetArgs(m.Message))));
68-
Receive<Info>(m => WithSerilog(logger => SetContextFromLogEvent(logger, m).Information(GetFormat(m.Message), GetArgs(m.Message))));
69-
Receive<Debug>(m => WithSerilog(logger => SetContextFromLogEvent(logger, m).Debug(GetFormat(m.Message), GetArgs(m.Message))));
77+
Receive<Error>(m => Handle(m));
78+
Receive<Warning>(m => Handle(m));
79+
Receive<Info>(m => Handle(m));
80+
Receive<Debug>(m => Handle(m));
7081
Receive<InitializeLogger>(m =>
7182
{
7283
_log.Info("SerilogLogger started");

0 commit comments

Comments
 (0)