翼度科技»论坛 编程开发 .net 查看内容

使用HttpLogging中间件记录接口请求日志

1

主题

1

帖子

3

积分

新手上路

Rank: 1

积分
3
介绍


  • HttpLogging 是 .NET 6 新加入的一个框架内置的中间件
  • 可以提供以下信息的日志:


  • HTTP请求信息
  • Common properties
  • Headers
  • Body
  • HTTP响应信息
使用

添加
  1. builder.Services.AddHttpLogging(options =>
  2. {
  3.     // 日志记录的字段配置,可以以 | 连接
  4.     options.LoggingFields = HttpLoggingFields.All;
  5.     // 增加请求头字段记录
  6.     options.RequestHeaders.Add("sec-ch-ua");
  7.     // 增加响应头字段记录
  8.     options.ResponseHeaders.Add("MyResponseHeader");
  9.     // 增加请求的媒体类型
  10.     options.MediaTypeOptions.AddText("application/javascript");
  11.     // 配置请求体日志最大长度.默认32 * 1024,32kb
  12.     options.RequestBodyLogLimit = 4096;
  13.     // 配置响应体日志最大长度.默认32 * 1024,32kb
  14.     options.ResponseBodyLogLimit = 4096;
  15. });
复制代码
使用,注意中间件顺序
  1. app.UseHttpLogging();
复制代码
记得在appsettings.json的"LogLevel"中设置这个
  1. "Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware": "Information"
复制代码
更多配置详解参见官方教程
问题

Q: 怎么忽略指定Api的日志记录?比如一些轮询接口
A: 目前可以使用这样的方式实现.参考HttpLoggingWithFilter
  1. app.UseWhen(
  2.   context => !context.Request.Path.StartsWithSegments("/Sensitive"), //SensitiveController.cs
  3.   builder => builder.UseHttpLogging()
  4. );
复制代码
Q: 怎么忽略指定Api中的指定信息?比如一些传递密码或者身份信息的接口
A: 可以用上边的方法忽略然后自行记录
官方issue跟进
HttpLoggingMiddleware could allow custom code to decide whether to log or not
Make Http Logging Middleware Endpoint aware

来源:https://www.cnblogs.com/ZUOXIANGE/archive/2023/06/28/17511238.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具