.NET 6新特性试用 | HTTP日志记录middleware
生活随笔
收集整理的这篇文章主要介绍了
.NET 6新特性试用 | HTTP日志记录middleware
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
前言
在以前,通常需要我们自己编写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/2Method: GETScheme: httpsPathBase:Path: /WeatherForecastAccept: text/plainHost: localhost:7082User-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, brAccept-Language: en-US,en;q=0.9Cookie: [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: 200Content-Type: application/json; charset=utf-8Date: Server: Kestrel可以看到,有大量的[Redacted]数据,这是因为安全考虑,默认情况下不记录这些敏感信息,比如Cookie。
我们可以使用AddHttpLogging自定义配置需要记录的信息,比如:
builder.Services.AddHttpLogging(options => {options.RequestHeaders.Add("Cookie"); });详细的配置如下:
| LoggingFields | 要记录请求和响应的字段。默认记录请求和响应属性和标头。 |
| MediaTypeOptions | 用于配置特定媒体类型的编码的选项。如果请求或响应与支持的媒体类型不匹配,将不会记录响应正文。 |
| RequestBodyLogLimit | 要记录的最大请求正文大小 (字节数) 。默认值为 32 KB。 |
| RequestHeaders | 允许记录的请求标头值。 |
| ResponseBodyLogLimit | 日志的最大响应正文大小 (字节数) 。默认值为 32 KB。 |
| ResponseHeaders | 允许记录的响应标头值。 |
结论
需要注意的是,使用HTTP日志记录会对性能有一定影响,请酌情是否开启或规划记录哪些内容。
如果你觉得这篇文章对你有所启发,请帮忙点个赞或者在看
总结
以上是生活随笔为你收集整理的.NET 6新特性试用 | HTTP日志记录middleware的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 微软开源的Web测试和自动化神器 Pla
- 下一篇: 2021.NET大会日程首发!行程亮点全