Serilog的子记录器过滤器无法正常工作



这是我的简单配置:

Log.Logger = new LoggerConfiguration()
    .WriteTo.Logger(l => l
        .Filter.ByExcluding(e => e.Level < LogEventLevel.Warning)
        .Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Warning))
        .WriteTo.File(
            Path.Combine(HttpContext.Current.Server.MapPath("~/logs/warnings"), "log.txt"),
            rollingInterval: RollingInterval.Day,
            flushToDiskInterval: TimeSpan.FromSeconds(1))
    .WriteTo.Logger(l => l
        .Filter.ByExcluding(e => e.Level < LogEventLevel.Error)
        .Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Error))
        .WriteTo.File(
            Path.Combine(HttpContext.Current.Server.MapPath("~/logs/errors"), "log.txt"),
            rollingInterval: RollingInterval.Day,
            flushToDiskInterval: TimeSpan.FromSeconds(1))
    .CreateLogger();

我想要的是分离错误警告日志事件级别。但是,我所有的错误日志仍写入〜/logs/warnings 文件夹。

同样的问题根本没有答案。

如何正确分开这些日志,配置是怎么了?

尝试使用此代码,是分开错误和警告日志事件

Log.Logger = 
    new LoggerConfiguration()                 
        .MinimumLevel.Debug()                 
        .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)                 
        .Enrich.FromLogContext()                 
        .WriteTo.Console()                 
        .WriteTo.Logger(lc => lc.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Error)                     
        .WriteTo.File(@"LogLogError.txt"))                 
        .WriteTo.Logger(lc => lc                     
        .Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Warning)                     
        .WriteTo.File(@"LogLogWarning.txt"))                 
        .WriteTo.File(@"Loglog.txt")                 
        .CreateLogger();

最新更新