Serilog 范围级别过滤
Serilog Range level filtering
在 log4net 中,您可以选择使用 levelMin levelMax 范围声明不同的文件附加程序。
这样一来,您就可以拥有一个用于调试的文件和一个用于出错的文件。
我怎样才能在 serilog 文件接收器中有相同的行为。
我有这段代码,但你只能指定 MinimumLevel
Log.Logger = new LoggerConfiguration()
.WriteTo.Async(a =>
{
a.RollingFile($"{AppDomain.CurrentDomain.BaseDirectory}\Logs\error.txt",
restrictedToMinimumLevel: Serilog.Events.LogEventLevel.Error);
})
.WriteTo.Async(a =>
{
a.RollingFile($"{AppDomain.CurrentDomain.BaseDirectory}\Logs\log.txt",
restrictedToMinimumLevel: Serilog.Events.LogEventLevel.Debug);
})
.CreateLogger();
它创建了两个文件,但在 log.txt 我还看到了错误级别消息
在 Serilog 中,您可以使用 sub-loggers 并对每个过滤器应用过滤器:
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Logger(c =>
c.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Debug)
.WriteTo.File("Debug.log"))
.WriteTo.Logger(c =>
c.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Error)
.WriteTo.File("Error.log"))
.CreateLogger();
Log.Debug("This goes to Debug.log only");
Log.Error("This goes to Error.log only");
Log.CloseAndFlush();
或者,如果您只想将 LogEventLevel
映射到文件,则可以使用 Serilog.Sinks.Map。
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Map(evt => evt.Level, (level, wt) => wt.File($"{level}.log"))
.CreateLogger();
Log.Debug("This goes to Debug.log only");
Log.Error("This goes to Error.log only");
Log.CloseAndFlush();
在 log4net 中,您可以选择使用 levelMin levelMax 范围声明不同的文件附加程序。 这样一来,您就可以拥有一个用于调试的文件和一个用于出错的文件。 我怎样才能在 serilog 文件接收器中有相同的行为。 我有这段代码,但你只能指定 MinimumLevel
Log.Logger = new LoggerConfiguration()
.WriteTo.Async(a =>
{
a.RollingFile($"{AppDomain.CurrentDomain.BaseDirectory}\Logs\error.txt",
restrictedToMinimumLevel: Serilog.Events.LogEventLevel.Error);
})
.WriteTo.Async(a =>
{
a.RollingFile($"{AppDomain.CurrentDomain.BaseDirectory}\Logs\log.txt",
restrictedToMinimumLevel: Serilog.Events.LogEventLevel.Debug);
})
.CreateLogger();
它创建了两个文件,但在 log.txt 我还看到了错误级别消息
在 Serilog 中,您可以使用 sub-loggers 并对每个过滤器应用过滤器:
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Logger(c =>
c.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Debug)
.WriteTo.File("Debug.log"))
.WriteTo.Logger(c =>
c.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Error)
.WriteTo.File("Error.log"))
.CreateLogger();
Log.Debug("This goes to Debug.log only");
Log.Error("This goes to Error.log only");
Log.CloseAndFlush();
或者,如果您只想将 LogEventLevel
映射到文件,则可以使用 Serilog.Sinks.Map。
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Verbose()
.WriteTo.Map(evt => evt.Level, (level, wt) => wt.File($"{level}.log"))
.CreateLogger();
Log.Debug("This goes to Debug.log only");
Log.Error("This goes to Error.log only");
Log.CloseAndFlush();