.net - Serilog .NET 核心:过滤请求日志并将它们发送到单独的接收器
问题描述
我想将我的请求日志保存在单独的日志文件中。我似乎找不到过滤请求登录跟踪的方法app.UseSerilogRequestLogging();
。
有没有办法做到这一点?我没有找到任何文档。
这是我正在尝试使用的 API,尽管我没有找到任何表明该事件是请求日志记录事件的属性。
.WriteTo.Logger(config => config
.MinimumLevel.Verbose()
.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Debug)
解决方案
来自所有人的请求日志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)
推荐阅读
- migration - 迁移到 .net core 3.1 后,授权发生在身份验证之前
- c++ - 对在类外声明的函数的未定义引用
- php - 带有 csrf 的 Laravel ajax 请求
- javascript - 我如何像冠状病毒一样设置 OpenStreetMap 的样式
- php - 致命错误:未捕获错误:调用未定义函数 redirect() PHP 注销会话
- amazon-web-services - 将 cloudformation 无服务器模板转换为 Terraform 的最佳方法
- typescript - 元素隐式具有“任何”类型,因为类型的表达式
- reactjs - 我应该同时使用 Facebook Relay 和 Redux
- python - Django中的购物车总价问题
- angular - Spring Boot 后端和 Angular 前端应用程序