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

2022-04-16 12:38:24

背景

们开发忽略掉的一点(而且是更加重要的一点)是:我们有没有在日志中泄露一些个人隐私数据(Personally Identifiable Information, PII)? 敏感数据不应该直接被记录到日志中,至少是需要经过加www.easck.com密或者混淆的。

怎么用

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

引入中间件

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

Program.cs
// 省略其他app.UseHttpLogging();app.MapControllers();

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

请求日志

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

响应日志

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

所有默认配置下不记录日志的字段都以[Redacted]代替,下面我们可以更改默认配置以显示更多内容:

配置服务

Program.cs

// http://www.easck.com省略其他...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;});

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

请求日志,注意红框标记的信息现在已经显示了

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

响应日志

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

总结

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

参考资料

HTTP Logging in ASP.NET Core

.NET 6 中的 Http Logging 中间件

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