使用HttpLogging中间件记录接口请求日志
介绍
- HttpLogging 是 .NET 6 新加入的一个框架内置的中间件
- 可以提供以下信息的日志:
- HTTP请求信息
- Common properties
- Headers
- Body
- HTTP响应信息
使用
添加
builder.Services.AddHttpLogging(options => { // 日志记录的字段配置,可以以 | 连接 options.LoggingFields = HttpLoggingFields.All; // 增加请求头字段记录 options.RequestHeaders.Add("sec-ch-ua"); // 增加响应头字段记录 options.ResponseHeaders.Add("MyResponseHeader"); // 增加请求的媒体类型 options.MediaTypeOptions.AddText("application/javascript"); // 配置请求体日志最大长度.默认32 * 1024,32kb options.RequestBodyLogLimit = 4096; // 配置响应体日志最大长度.默认32 * 1024,32kb options.ResponseBodyLogLimit = 4096; });
使用,注意中间件顺序
app.UseHttpLogging();
记得在appsettings.json的"LogLevel"中设置这个
"Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware": "Information"
更多配置详解参见官方教程
效果如下
其中[Redacted]
标识的Header信息是传递了但是默认未记录的,要记录需要自行添加.
问题
Q: 怎么忽略指定Api的日志记录?比如一些轮询接口
A: 目前可以使用这样的方式实现.参考HttpLoggingWithFilter
app.UseWhen( context => !context.Request.Path.StartsWithSegments("/Sensitive"), //SensitiveController.cs builder => builder.UseHttpLogging() );
Q: 怎么忽略指定Api中的指定信息?比如一些传递密码或者身份信息的接口
A: 可以用上边的方法忽略然后自行记录
官方issue跟进
HttpLoggingMiddleware could allow custom code to decide whether to log or not
Make Http Logging Middleware Endpoint aware
HttpLoggingMiddleware does not log all response headers when log response body
本文来自博客园,作者:ZUOXIANGE,转载请注明原文链接:https://www.cnblogs.com/ZUOXIANGE/p/17511238.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结