Serilog – 多个日志文件

我正在使用Serilog进行日志记录,并且无法弄清楚如何将日志事件分离到不同的文件。 例如,我想将错误记录到error_log-ddmmyyyy.txt,并将警告记录到warn_log-ddmmyyyy.txt。

这是我的记录器配置:

Log.Logger = new LoggerConfiguration() .WriteTo.Logger(lc => lc.Filter.ByIncludingOnly(Matching.WithProperty("Level", "Warning")) .WriteTo.RollingFile( Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"Logs\warn_log-{Date}.txt"), outputTemplate: OutputTemplate)) .WriteTo.Logger(lc => lc.Filter.ByIncludingOnly(Matching.WithProperty("Level", "Error")) .WriteTo.RollingFile( Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"Logs\error_log-{Date}.txt"), outputTemplate: OutputTemplate)) .CreateLogger(); 

它仅在我在日志消息中指定{Level}属性时才有效。

我试图使用:

 Matching.WithProperty("Level", l => l == LogEventLevel.Warning) 

但它也没有用。

我认为你需要:

 .ByIncludingOnly(evt => evt.Level == LogEventLevel.Warning) 

我使用以下配置,它适用于我:

  Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .WriteTo.LiterateConsole() .WriteTo.Logger(l => l.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Information).WriteTo.RollingFile(@"Logs\Info-{Date}.log")) .WriteTo.Logger(l => l.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Debug).WriteTo.RollingFile(@"Logs\Debug-{Date}.log")) .WriteTo.Logger(l => l.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Warning).WriteTo.RollingFile(@"Logs\Warning-{Date}.log")) .WriteTo.Logger(l => l.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Error).WriteTo.RollingFile(@"Logs\Error-{Date}.log")) .WriteTo.Logger(l => l.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Fatal).WriteTo.RollingFile(@"Logs\Fatal-{Date}.log")) .WriteTo.RollingFile(@"Logs\Verbose-{Date}.log") .CreateLogger();