Use LoggingLevelSwitchfor this:
var levelSwitch = new LoggingLevelSwitch(LogEventLevel.Warning);
Log.Logger = new LoggerConfiguration()
.MinimumLevel.ControlledBy(levelSwitch)
.WriteTo.Console()
.CreateLogger();
Log.Debug("This is not shown");
levelSwitch.MinimumLevel = LogEventLevel.Debug;
Log.Debug("This will now be shown, since the level has changed");
When the `levelSwitch.MinimumLevel parameter is changed, the log records a new minimum level.
For Serilog 1.4.10 and earlier
Serilog .
:
volatile LogEventLevel minLevel;
Log.Logger = new LoggerConfiguration()
.Filter.ByExcluding(evt => (int)evt.Level < (int)minLevel)
.CreateLogger();
, , minLevel .
, , , .
, , :
var minVerboseLogger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.CreateLogger();
var minWarningLogger = new LoggerConfiguration()
.MinimumLevel.Warning()
.CreateLogger();
public ILogger Log
{
get { return isVerbose ? minVerboseLogger : minWarningLogger; }
}
, , . , , :
var minWarningLogger = new LoggerConfiguration()
.MinimumLevel.Warning()
.WriteTo.Sink((ILogEventSink)minVerboseLogger)
.CreateLogger();
, , NLog; - , .