显式日志级别,而不是Serilog的最小级别

时间:2019-05-29 09:04:31

标签: c# serilog

有什么方法可以为serilog中的每个文件配置一个日志级别吗?

我知道我可以为每个“ MinimumLevel”配置一个文件,但这不是我所需要的。

2 个答案:

答案 0 :(得分:3)

Serilog.Sinks.Map可用于此目的,而无需引入太多重复:

Log.Logger = new LoggerConfiguration()
    .WriteTo.Map(le => le.Level, (level, wt) => wt.File($"C:\\Temp\\{level}-logs.txt"));

答案 1 :(得分:2)

我有类似的要求。经过研究,我在.net core 2.2 Web api的Startup类中添加了以下内容:

Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Override("Microsoft", LogEventLevel.Error)
    .WriteTo.Logger(lc => lc
        .Filter.ByIncludingOnly(evt => evt.Level == LogEventLevel.Error)
        .WriteTo.RollingFile("C:\\Temp\\erros-logs.txt"))
    .WriteTo.Logger(lc => lc
        .Filter.ByIncludingOnly(evt => evt.Level == LogEventLevel.Information)
        .WriteTo.RollingFile("C:\\Temp\\info-logs.txt"))
    .CreateLogger();

如果您正在从appsettings.json文件中读取设置,并且要使用上述设置,则应该从文件中转移逻辑。

我的回答受到以下帖子的启发: Restrict to level