背景 因为在上篇演示Action Filter的时候可能是因为举的例子不够好,有小伙伴在评论区指出.NET 6新增加的特性可以实现在视图模型绑定之前允许记录Http请求日志的组件:H
因为在上篇演示Action Filter
的时候可能是因为举的例子不够好,有小伙伴在评论区指出.NET 6
新增加的特性可以实现在视图模型绑定之前允许记录Http请求日志的组件:HttpLogging
。这个组件我之前试过,而Action Filter
与其用来记录日志,更不如说是为Http请求的接收和响应提供了中间可以修改的机会。
本着让更多的人了解新知识的出发点,这次我们临时把这个主题加进来。
HttpLogging
是 .net 6
新加入的一个框架内置的中间件当你需要记录HTTP请求和响应的信息或者部分信息时。
HttpLogging
来记录请求信息尤其是Body信息时,需要仔细考虑仅记录必要的字段。当你不确定它会不会对你的程序有性能影响时,你需要进行性能测试。这个中间件的用法非常简单,两个方法,六个可以配置的选项:
在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;
});
同样的请求我们再来看看效果:
可以看到,这个中间件使用起来是比较简单的。
HTTP Logging in ASP.net core
.NET 6 中的 Http Logging 中间件
到此这篇关于.NET 6开发TodoList应用之请求日志组件HttpLogging介绍的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。
--结束END--
本文标题: .NET 6开发TodoList应用之请求日志组件HttpLogging介绍
本文链接: https://www.lsjlt.com/news/161413.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2023-05-21
2023-05-21
2023-05-21
2023-05-21
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0