文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

.NET 6开发TodoList应用之请求日志组件HttpLogging介绍

2024-04-02 19:55

关注

背景

因为在上篇演示Action Filter的时候可能是因为举的例子不够好,有小伙伴在评论区指出.NET 6新增加的特性可以实现在视图模型绑定之前允许记录Http请求日志的组件:HttpLogging。这个组件我之前试过,而Action Filter与其用来记录日志,更不如说是为Http请求的接收和响应提供了中间可以修改的机会。

本着让更多的人了解新知识的出发点,这次我们临时把这个主题加进来。

什么是HttpLogging?

  1. HttpLogging.NET 6 新加入的一个框架内置的中间件
  2. 它允许记录HTTP请求和响应,可以提供以下信息的日志:
    • HTTP请求信息;
    • 普通属性;
    • Header信息;
    • Body信息;
    • HTTP响应信息。

什么时候可以考虑使用HttpLogging?

当你需要记录HTTP请求和响应的信息或者部分信息时。

而当你使用它时,又需要注意什么?

  1. 性能
    当你决定使用 HttpLogging 来记录请求信息尤其是Body信息时,需要仔细考虑仅记录必要的字段。当你不确定它会不会对你的程序有性能影响时,你需要进行性能测试。
  2. 隐私
    相比于性能,更容易被我们开发忽略掉的一点(而且是更加重要的一点)是:我们有没有在日志中泄露一些个人隐私数据(Personally Identifiable Information, PII)? 敏感数据不应该直接被记录到日志中,至少是需要经过加密或者混淆的。

怎么用

这个中间件的用法非常简单,两个方法,六个可以配置的选项:

引入中间件

Program.csapp.MapControllers();之前添加中间件:

// 省略其他
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;
});

同样的请求我们再来看看效果:

总结

可以看到,这个中间件使用起来是比较简单的。

参考资料

HTTP Logging in ASP.NET Core

.NET 6 中的 Http Logging 中间件

到此这篇关于.NET 6开发TodoList应用之请求日志组件HttpLogging介绍的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯