diff --git a/src/Akka.Logger.Serilog/SerilogLogger.cs b/src/Akka.Logger.Serilog/SerilogLogger.cs index 006cd7a..a097b48 100644 --- a/src/Akka.Logger.Serilog/SerilogLogger.cs +++ b/src/Akka.Logger.Serilog/SerilogLogger.cs @@ -24,6 +24,10 @@ namespace Akka.Logger.Serilog /// public class SerilogLogger : ReceiveActor, IRequiresMessageQueue { + /// + /// Log filter. See https://getakka.net/articles/utilities/logging.html#filtering-log-messages for details. + /// + public LogFilterEvaluator Filter { get; } private readonly ILoggingAdapter _log = Logging.GetLogger(Context.System.EventStream, "SerilogLogger"); [MethodImpl(MethodImplOptions.AggressiveInlining)] @@ -97,10 +101,27 @@ private static void Handle(Debug logEvent) /// public SerilogLogger() { - Receive(Handle); - Receive(Handle); - Receive(Handle); - Receive(Handle); + Filter = Context.System.Settings.LogFilter; + Receive(e => + { + if(Filter.ShouldTryKeepMessage(e, out _)) + Handle(e); + }); + Receive(w => + { + if(Filter.ShouldTryKeepMessage(w, out _)) + Handle(w); + }); + Receive(i => + { + if(Filter.ShouldTryKeepMessage(i, out _)) + Handle(i); + }); + Receive(d => + { + if(Filter.ShouldTryKeepMessage(d, out _)) + Handle(d); + }); Receive(_ => { _log.Info("SerilogLogger started");