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);
}
}