Serilog 不同级别的不同接收器

use*_*839 11 serilog .net-core serilog-exceptions

我有以下一段 C# 代码,用于使用多个接收器(控制台和文件)编写日志,如何限制控制台仅记录(信息、警告和错误)和文件以记录所有内容。

var outputTemplate = "[{Level:u3}] {Message:lj}{NewLine}{Exception}";

// Logger  

Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Verbose()
    .WriteTo.Console(outputTemplate: outputTemplate, theme:SystemConsoleTheme.Literate)
    .WriteTo.File($"logs/log-{DateTime.Now:yyyy-MM-dd_HH:mm:ss.fff}.log")              
    .CreateLogger();
Run Code Online (Sandbox Code Playgroud)

Cai*_*ete 12

您可以restrictedToMinimumLevel为每个接收器设置一个值,以提高其应记录的最低级别。

文档中通过示例对此进行了解释:

https://github.com/serilog/serilog/wiki/Configuration-Basics#overriding-per-sink

Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Debug()
    .WriteTo.File("log.txt")
    .WriteTo.Console(restrictedToMinimumLevel: LogEventLevel.Information)
    .CreateLogger();
Run Code Online (Sandbox Code Playgroud)