欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-22 12:14:02
背景因为在上篇演示action filter的时候可能是因为举的例子不够好,有小伙伴在评论区指出.net 6新增加的特性可以实现在视图模型绑定之前允许记录http请求日志的组件:httplogging...

背景

因为在上篇演示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();之前添加中间件:

  • program.cs
// 省略其他
app.usehttplogging();
app.mapcontrollers();

当我们使用默认配置的时候,来随便找一个接口看一下效果:

  • 请求日志

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

  • 响应日志

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

所有默认配置下不记录日志的字段都以[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应用之请求日志组件HttpLogging介绍

总结

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

参考资料

http logging in asp.net core

.net 6 中的 http logging 中间件

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