.net 6.0新特性 HTTP日志记录middleware(demo演示)

前言

在以前,通常需要我们自己编写middleware记录HTTP请求和响应。

而在.NET 6中默认就有已经实现好的middleware,添加了对HTTP日志记录的支持。

Demo

要想启用HTTP日志记录middleware十分简单:

app.UseHttpLogging(); 

运行程序,发现没有任何日志!?

原来,Microsoft.AspNetCore默认日志记录级别为Warning,需要在配置文件中设置HttpLogging的日志记录级别为Information:

"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore.HttpLogging": "Information",
"Microsoft.AspNetCore": "Warning"
}
},

再次运行程序,发现默认情况下HTTP日志记录middleware将记录以下内容(请求和响应):

info: Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware[1]
Request:
Protocol: HTTP/2
Method: GET
Scheme: https
PathBase:
Path: /WeatherForecast
Accept: text/plain
Host: localhost:7082
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36 Edg/96.0.1054.29
:method: [Redacted]
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cookie: [Redacted]
Referer: [Redacted]
sec-ch-ua: [Redacted]
sec-ch-ua-mobile: [Redacted]
sec-ch-ua-platform: [Redacted]
sec-fetch-site: [Redacted]
sec-fetch-mode: [Redacted]
sec-fetch-dest: [Redacted]
info: Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware[2]
Response:
StatusCode: 200
Content-Type: application/json; charset=utf-8
Date:
Server: Kestrel

可以看到,有大量的[Redacted]数据,这是因为安全考虑,默认情况下不记录这些敏感信息,比如Cookie。

我们可以使用AddHttpLogging自定义配置需要记录的信息,比如:

builder.Services.AddHttpLogging(options =>
{
options.RequestHeaders.Add("Cookie");
});

详细的配置如下:

.NET 6新特性试用 | HTTP日志记录middleware

结论

需要注意的是,使用HTTP日志记录会对性能有一定影响,请酌情是否开启或规划记录哪些内容。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 xxx@163.com 举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论