首页 > 解决方案 > Serilog .NET 核心:过滤请求日志并将它们发送到单独的接收器

问题描述

我想将我的请求日志保存在单独的日志文件中。我似乎找不到过滤请求登录跟踪的方法app.UseSerilogRequestLogging();

有没有办法做到这一点?我没有找到任何文档。

这是我正在尝试使用的 API,尽管我没有找到任何表明该事件是请求日志记录事件的属性。

.WriteTo.Logger(config => config
        .MinimumLevel.Verbose()
        .Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Debug)

标签: .netasp.net-coreserilog

解决方案


来自所有人的请求日志UseSerilogRequestLogging具有相同的模板,因此您可以使用:

  .Filter.ByIncludingOnly(e => e.MessageTemplate.Text == 
    "HTTP {RequestMethod} {RequestPath} responded {StatusCode} in {Elapsed:0.0000} ms")

(假设您使用的是默认模板。)

或者,因为它们都来自同一个班级:

var requestLogs = Matching.FromSource("Serilog.AspNetCore.RequestLoggingMiddleware");

// ... then:
  .Filter.ByIncludingOnly(requestLogs)

推荐阅读