.NET?6開發(fā)TodoList應(yīng)用之請求日志組件HttpLogging介紹
背景
因為在上篇演示Action Filter
的時候可能是因為舉的例子不夠好,有小伙伴在評論區(qū)指出.NET 6
新增加的特性可以實現(xiàn)在視圖模型綁定之前允許記錄Http請求日志的組件:HttpLogging
。這個組件我之前試過,而Action Filter
與其用來記錄日志,更不如說是為Http請求的接收和響應(yīng)提供了中間可以修改的機會。
本著讓更多的人了解新知識的出發(fā)點,這次我們臨時把這個主題加進來。
什么是HttpLogging?
HttpLogging
是.NET 6
新加入的一個框架內(nèi)置的中間件- 它允許記錄HTTP請求和響應(yīng),可以提供以下信息的日志:
- HTTP請求信息;
- 普通屬性;
- Header信息;
- Body信息;
- HTTP響應(yīng)信息。
什么時候可以考慮使用HttpLogging?
當你需要記錄HTTP請求和響應(yīng)的信息或者部分信息時。
而當你使用它時,又需要注意什么?
- 性能
當你決定使用HttpLogging
來記錄請求信息尤其是Body信息時,需要仔細考慮僅記錄必要的字段。當你不確定它會不會對你的程序有性能影響時,你需要進行性能測試。 - 隱私
相比于性能,更容易被我們開發(fā)忽略掉的一點(而且是更加重要的一點)是:我們有沒有在日志中泄露一些個人隱私數(shù)據(jù)(Personally Identifiable Information, PII)? 敏感數(shù)據(jù)不應(yīng)該直接被記錄到日志中,至少是需要經(jīng)過加密或者混淆的。
怎么用
這個中間件的用法非常簡單,兩個方法,六個可以配置的選項:
引入中間件
在Program.cs
的 app.MapControllers();
之前添加中間件:
Program.cs
// 省略其他 app.UseHttpLogging(); app.MapControllers();
當我們使用默認配置的時候,來隨便找一個接口看一下效果:
- 請求日志
- 響應(yīng)日志
所有默認配置下不記錄日志的字段都以[Redacted]
代替,下面我們可以更改默認配置以顯示更多內(nèi)容:
配置服務(wù)
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"); // 增加響應(yīng)頭字段記錄 options.ResponseHeaders.Add("Server"); // 增加請求的媒體類型 options.MediaTypeOptions.AddText("application/javascript"); // 配置請求體日志最大長度 options.RequestBodyLogLimit = 4096; // 配置響應(yīng)體日志最大長度 options.ResponseBodyLogLimit = 4096; });
同樣的請求我們再來看看效果:
- 請求日志,注意紅框標記的信息現(xiàn)在已經(jīng)顯示了
- 響應(yīng)日志
總結(jié)
可以看到,這個中間件使用起來是比較簡單的。
參考資料
到此這篇關(guān)于.NET 6開發(fā)TodoList應(yīng)用之請求日志組件HttpLogging介紹的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
簡單使用BackgroundWorker創(chuàng)建多個線程的教程
簡單使用BackgroundWorker創(chuàng)建多個線程的教程,需要的朋友可以參考一下2013-03-03Visual Studio 2017如何用正則修改部分內(nèi)容詳解
這篇文章主要給大家介紹了關(guān)于Visual Studio 2017如何用正則修改部分內(nèi)容的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05Asp.net使用SignalR實現(xiàn)酷炫端對端聊天功能
這篇文章主要為大家詳細介紹了Asp.net使用SignalR實現(xiàn)酷炫端對端聊天功能,感興趣的小伙伴們可以參考一下2016-04-04Asp.Net Core2.1前后使用HttpClient的兩種方式
這篇文章主要給大家介紹了關(guān)于Asp.Net Core2.1前后HttpClient的使用方式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03ASP.NET保存PDF、Word和Excel文件到數(shù)據(jù)庫
這篇文章主要為大家詳細介紹了ASP.NET保存PDF、Word和Excel文件到數(shù)據(jù)庫的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01ASP.NET網(wǎng)站使用Kindeditor富文本編輯器配置步驟
首先下載編輯器然后部署編輯器最后在網(wǎng)頁中加入(ValidateRequest="false")引入腳本文件,具體配置步驟如下,有需求的朋友可以了解下哈2013-06-06C#實現(xiàn)支持斷點續(xù)傳多線程下載客戶端工具類
C#實現(xiàn)支持斷點續(xù)傳多線程下載的 Http Web 客戶端工具類 (C# DIY HttpWebClient),感興趣的朋友可以參考下本文,或許對你有所幫助2013-04-04