using System; using Serilog; using Serilog.Configuration; using Serilog.Core; using Serilog.Events; using Serilog.Formatting.Display; namespace NitroxModel.Logger; public static class LoggerSinkConfigurationExtensions { /// /// Buffers messages while the returns true. If false, resumes buffering. /// public static LoggerConfiguration Valve( this LoggerSinkConfiguration loggerConfiguration, Action configure, Func predicate, LogEventLevel minimumLevel = LogEventLevel.Verbose) { ILogEventSink logEventSink = LoggerSinkConfiguration.Wrap(wrappedSink => new ConditionalValveSink(predicate, wrappedSink), configure); return loggerConfiguration.Sink(logEventSink, minimumLevel); } public static LoggerConfiguration Message( this LoggerSinkConfiguration loggerConfiguration, Action writer, LogEventLevel minimumLevel = LogEventLevel.Verbose, string outputTemplate = "{Message}", IFormatProvider formatProvider = null) { return loggerConfiguration.Sink(new MessageSink(new MessageTemplateTextFormatter(outputTemplate, formatProvider), writer), minimumLevel); } }