c# - Serilog - 多个日志文件

标签 c# logging 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<LogEventLevel>("Level", l => l == 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();

关于c# - Serilog - 多个日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28292601/

相关文章:

c# - logstash @timestamp 到 .NET 中强类型的 Elasticsearch 映射

c# - 单元测试 - 如何测试仅插入日志消息的 `void` 方法 (Serilog)

c# - 如何从另一个进程获取 .NET CLR 内存堆大小?

c# - 是::用于 "global::"以外的任何内容

java - 使用 RollingFileAppender 无限数量的备份文件

java - 如何在以下代码中的日志中附加一些字符串

sql-server - Serilog 可配置 SQL Server 接收器

c# - 在 WinService 或 WinForms 应用程序中通过 URL 目录获取文件名

c# - 关于 session 的教学?

python 将调试日志记录到标准输出中