您现在的位置是:网站首页> 编程资料编程资料
.NET 6开发TodoList应用之请求日志组件HttpLogging介绍_实用技巧_
2023-05-24
517人已围观
简介 .NET 6开发TodoList应用之请求日志组件HttpLogging介绍_实用技巧_
背景
因为在上篇演示Action Filter的时候可能是因为举的例子不够好,有小伙伴在评论区指出.NET 6新增加的特性可以实现在视图模型绑定之前允许记录Http请求日志的组件:HttpLogging。这个组件我之前试过,而Action Filter与其用来记录日志,更不如说是为Http请求的接收和响应提供了中间可以修改的机会。
本着让更多的人了解新知识的出发点,这次我们临时把这个主题加进来。
什么是HttpLogging?
HttpLogging是.NET 6新加入的一个框架内置的中间件- 它允许记录HTTP请求和响应,可以提供以下信息的日志:
- HTTP请求信息;
- 普通属性;
- Header信息;
- Body信息;
- HTTP响应信息。
什么时候可以考虑使用HttpLogging?
当你需要记录HTTP请求和响应的信息或者部分信息时。
而当你使用它时,又需要注意什么?
- 性能
当你决定使用HttpLogging来记录请求信息尤其是Body信息时,需要仔细考虑仅记录必要的字段。当你不确定它会不会对你的程序有性能影响时,你需要进行性能测试。 - 隐私
相比于性能,更容易被我们开发忽略掉的一点(而且是更加重要的一点)是:我们有没有在日志中泄露一些个人隐私数据(Personally Identifiable Information, PII)? 敏感数据不应该直接被记录到日志中,至少是需要经过加密或者混淆的。
怎么用
这个中间件的用法非常简单,两个方法,六个可以配置的选项:
引入中间件
在Program.cs 的 app.MapControllers();之前添加中间件:
Program.cs
// 省略其他 app.UseHttpLogging(); app.MapControllers();
当我们使用默认配置的时候,来随便找一个接口看一下效果:
- 请求日志

- 响应日志

所有默认配置下不记录日志的字段都以[Redacted]代替,下面我们可以更改默认配置以显示更多内容:
配置服务
Program.cs
// 省略其他... builder.Services.AddControllers(); builder.Services.AddHttpLogging(options => { // 日志记录的字段配置,可以以 | 连接 options.LoggingFields = HttpLoggingFields.All; // 增加请求头字段记录 options.RequestHeaders.Add("Sec-Fetch-Site"); options.RequestHeaders.Add("Sec-Fetch-Mode"); options.RequestHeaders.Add("Sec-Fetch-Dest"); // 增加响应头字段记录 options.ResponseHeaders.Add("Server"); // 增加请求的媒体类型 options.MediaTypeOptions.AddText("application/javascript"); // 配置请求体日志最大长度 options.RequestBodyLogLimit = 4096; // 配置响应体日志最大长度 options.ResponseBodyLogLimit = 4096; });同样的请求我们再来看看效果:
- 请求日志,注意红框标记的信息现在已经显示了

- 响应日志

总结
可以看到,这个中间件使用起来是比较简单的。
参考资料
到此这篇关于.NET 6开发TodoList应用之请求日志组件HttpLogging介绍的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。
您可能感兴趣的文章:
- .NET 6开发TodoList应用之实现查询分页
- .NET 6开发TodoList应用之实现ActionFilter
- .NET 6开发TodoList应用之实现接口请求验证
- .NET 6开发TodoList应用之实现DELETE请求与HTTP请求幂等性
- .NET 6开发TodoList应用之实现PUT请求
- .NET 6开发TodoList应用之实现全局异常处理
- .NET 6开发TodoList应用之使用AutoMapper实现GET请求
- .NET 6开发TodoList应用之实现Repository模式
- .NET 6开发TodoList应用之使用MediatR实现POST请求
- .NET 6开发TodoList应用引入数据存储
- .NET 6开发TodoList应用引入第三方日志库
- .NET 6开发TodoList应用实现结构搭建
- .NET 6开发TodoList应用实现系列背景
- 使用.NET 6开发TodoList应用之引入数据存储的思路详解
- 使用.NET 6开发TodoList应用之领域实体创建原理和思路
相关内容
- .NET 6开发TodoList应用之实现查询分页_实用技巧_
- .Net Core下使用Dapper的方法_自学过程_
- ORM框架之Dapper简介和性能测试_基础应用_
- .NetCore使用Swagger+API多版本控制的流程分析_实用技巧_
- .NET 6开发TodoList应用之实现ActionFilter_实用技巧_
- 基于ABP框架实现RBAC(角色访问控制)_实用技巧_
- 基于ABP框架实现数据字典开发_实用技巧_
- .NET 6开发TodoList应用之实现接口请求验证_实用技巧_
- .NET+Sqlite支持加密的操作方法_实用技巧_
- Entity Framework Core关联删除_实用技巧_
