1010using Akka . Event ;
1111using Serilog ;
1212using Akka . Dispatch ;
13- using Akka . Event ;
1413
1514namespace 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