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

 更新时间:2022年01月01日 11:24:29   作者:CODE4NOTHING  
这篇文章介绍了.NET 6开发TodoList应用之请求日志组件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();

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

  • 请求日志

  • 响应日志

所有默认配置下不记录日志的字段都以[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介绍的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • CheckBox为CheckBoxList实现全选或全取消选择(js代码实现)

    CheckBox为CheckBoxList实现全选或全取消选择(js代码实现)

    在管理商品后台是,由于CheckBoxList的选择太多,用户需要一个全选或全取消的功能,这样操作起来会提高效率同时可以减少误点等,本文将教大家如何实现,有需要的朋友可以参考下,望本文对你有所帮助
    2013-01-01
  • ASP.NET文件处理如何操作

    ASP.NET文件处理如何操作

    这篇文章主要介绍了ASP.NET文件处理如何操作,需要的朋友可以参考下
    2015-09-09
  • 微信开发(一) asp.net接入

    微信开发(一) asp.net接入

    我们要进行微信公众平台的开发,第一步当然是要有公众号了。什么?不知道什么是微信公众号,看来你还要先回炉炼炼了,呵呵。通俗的说,我们微信平台就好像是一个大社会,里面有个体人,也有各种组织机构。
    2016-05-05
  • Asp.Net MVC 分页、检索、排序整体实现代码

    Asp.Net MVC 分页、检索、排序整体实现代码

    很多时候需要这样的功能,对表格进行分页、排序和检索。本篇文章主要介绍了Asp.Net MVC 分页、检索、排序整体实现,有兴趣的可以了解一下。
    2017-01-01
  • asp.net 纯真ip库取得所在地实现代码

    asp.net 纯真ip库取得所在地实现代码

    asp.net 纯真ip库取得所在地实现代码,需要的朋友可以参考一下。
    2009-05-05
  • c#加密类使用方法示例

    c#加密类使用方法示例

    这篇文章主要介绍了c#加密类使用方法,大家可以参考使用
    2013-11-11
  • .NET core 3.0如何使用Jwt保护api详解

    .NET core 3.0如何使用Jwt保护api详解

    这篇文章主要给大家介绍了关于.NET core 3.0如何使用Jwt保护api的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用.NET core 3.0具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-11-11
  • asp.net mvc 实现文件上传带进度条的思路与方法

    asp.net mvc 实现文件上传带进度条的思路与方法

    这篇文章主要给大家介绍了关于asp.net mvc 实现文件上传带进度条的思路与方法,文中给出了详细的示例代码,相信对大家的理解和学习很有帮助,有需要的朋友们可以参考借鉴,下面来跟着小编一起学习学习吧。
    2016-12-12
  • .Net Core限流的实现示例

    .Net Core限流的实现示例

    限流能够很好的控制住一个客户端访问服务器资源地址的请求次数,本文主要介绍了.Net Core限流的实现示例,感兴趣的可以了解一下
    2021-07-07
  • 详解最好的.NET开源免费ZIP库DotNetZip(.NET组件介绍之三)

    详解最好的.NET开源免费ZIP库DotNetZip(.NET组件介绍之三)

    本篇文章主要介绍了.NET开源免费ZIP库DotNetZip组件的介绍,可以实现对文件的压缩和解压,有兴趣的朋友可以了解一下。
    2016-12-12

最新评论