使用.NET 6开发TodoList应用(12.1)——加餐(1) .NET 6中的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;
});
同样的请求我们再来看看效果:
总结#
可以看到,这个中间件使用起来是比较简单的。
参考资料#
作者:CODE4NOTHING
出处:https://www.cnblogs.com/code4nothing/p/build-todolist-12-1.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
欢迎转载,转载请注明出处
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架