.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大会日程首发!行程亮点全