ASP.NET Core擴(kuò)展庫(kù)之Http日志的使用詳解
最佳實(shí)踐都告訴我們不要記錄請(qǐng)求的詳細(xì)日志,因?yàn)檫@有安全問(wèn)題,但在實(shí)際開(kāi)發(fā)中,請(qǐng)求的詳細(xì)內(nèi)容對(duì)于快速定位問(wèn)題卻是非常重要的,有時(shí)也是系統(tǒng)的強(qiáng)力證據(jù)。Xfrogcn.AspNetCore.Extensions擴(kuò)展庫(kù)提供了服務(wù)端和客戶端的詳細(xì)日志功能,通過(guò)配置可以開(kāi)啟。
服務(wù)端日志通過(guò)請(qǐng)求中間件來(lái)完成,中間件會(huì)以Trace級(jí)別記錄請(qǐng)求和應(yīng)答詳情,以Debug級(jí)別記錄請(qǐng)求耗時(shí)。服務(wù)的請(qǐng)求日志的名稱為ServerRequest.Logger
要開(kāi)啟服務(wù)端詳情日志,只需將擴(kuò)展庫(kù)配置中的ServerRequestLevel屬性設(shè)置為Verbose級(jí)別,該配置默認(rèn)是Information,故不會(huì)記錄請(qǐng)求詳情及請(qǐng)求耗時(shí)。
開(kāi)啟請(qǐng)求詳情后,由于需要讀取請(qǐng)求和應(yīng)答的詳細(xì)內(nèi)容,對(duì)性能將有所影響。同時(shí),由于要讀取請(qǐng)求體,將自動(dòng)開(kāi)啟請(qǐng)求的緩沖。只有在需要記錄詳細(xì)日志時(shí),才會(huì)讀取詳情,故關(guān)閉后對(duì)于性能不會(huì)產(chǎn)生太大影響。
客服端的請(qǐng)求詳細(xì)日志,是基于IHttpClientFactory以及HttpClient框架,在客戶端請(qǐng)求管道處理中加入了日志記錄管道。請(qǐng)求處理管道會(huì)以Trace級(jí)別記錄請(qǐng)求和應(yīng)答詳情,另外,如果請(qǐng)求發(fā)生異常,將以Error級(jí)別記錄異常詳情。客戶端請(qǐng)求日志的名稱為ClientRequest.Logger
要開(kāi)啟客戶端請(qǐng)求詳細(xì)日志,只需將擴(kuò)展庫(kù)配置中的EnableClientRequestLog設(shè)置為true,同時(shí)將ClientRequestLevel設(shè)置為Verbose,該設(shè)置的默認(rèn)值為Information。與服務(wù)端一樣,只有在符合條件時(shí)才會(huì)記錄請(qǐng)求與應(yīng)答詳情,故如果未開(kāi)啟,對(duì)性能不會(huì)產(chǎn)生影響。注意,當(dāng)EnableClientRequestLog設(shè)置為false時(shí),擴(kuò)展庫(kù)不會(huì)將日志請(qǐng)求管道插入客戶端請(qǐng)求管道中。該設(shè)置默認(rèn)為true。
一、開(kāi)啟服務(wù)端請(qǐng)求日志
要在服務(wù)端開(kāi)啟請(qǐng)求詳細(xì)日志,只需引用Xfrogcn.AspNetCore.Extensions庫(kù),然后在Startup類(lèi)中,配置服務(wù)請(qǐng)求級(jí)別為Verbose:
public void ConfigureServices(IServiceCollection services) { services.AddExtensions(Configuration, config=> { config.FileLog = true; config.ConsoleLog = true; // 設(shè)置服務(wù)端請(qǐng)求日志級(jí)別為Verbose config.ServerRequestLevel = Serilog.Events.LogEventLevel.Verbose; }); services.AddControllers(); }
二、開(kāi)啟客戶端請(qǐng)求日志
要開(kāi)啟客戶端日志,只需引用Xfrogcn.AspNetCore.Extensions庫(kù),然后在Startup類(lèi)中,配置ClientRequestLevel為Verbose, EnableClientRequestLog設(shè)置為true。
class Program { static async Task Main(string[] args) { IServiceCollection services = new ServiceCollection() .AddExtensions(null, config => { config.EnableClientRequestLog = true; config.ClientRequestLevel = Serilog.Events.LogEventLevel.Verbose; config.ConsoleLog = true; }); IServiceProvider provider = services.BuildServiceProvider(); var clientFactory = provider.GetRequiredService<IHttpClientFactory>(); HttpClient client = clientFactory.CreateClient(); var response = await client.GetAsync("http://localhost:5000/weatherforecast"); Console.ReadLine(); } }
三、示例
詳細(xì)示例請(qǐng)參考GitHub
Xfrogcn.AspNetCore.Extensions地址:GitHub Gitee
以上就是ASP.NET Core擴(kuò)展庫(kù)之Http日志的使用詳解的詳細(xì)內(nèi)容,更多關(guān)于ASP.NET Core擴(kuò)展庫(kù)之Http日志的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- ASP.NET?Core記錄日志
- ASP.Net?Core中的日志與分布式鏈路追蹤
- ASP.NET Core使用NLog記錄日志
- ASP.NET Core使用Log4net實(shí)現(xiàn)日志記錄功能
- ASP.NET Core使用NLog輸出日志記錄
- ASP.NET Core擴(kuò)展庫(kù)之日志功能的使用詳解
- Asp.Net Core用NLog記錄日志操作方法
- Asp.Net Core輕松學(xué)之利用日志監(jiān)視進(jìn)行服務(wù)遙測(cè)詳解
- ASP.NET Core開(kāi)發(fā)教程之Logging利用NLog寫(xiě)日志文件
- ASP.NET Core 2.0 WebApi全局配置及日志實(shí)例
- 詳解ASP.NET Core應(yīng)用中如何記錄和查看日志
- ASP.NET?Core使用自定義日志中間件
相關(guān)文章
asp.net對(duì)URL含有中文參數(shù)的轉(zhuǎn)換
asp.net的傳參中經(jīng)常使用到中文參數(shù)的處理,下面的函數(shù)可以解決中文參數(shù)的問(wèn)題2008-03-03iis訪問(wèn)出現(xiàn)各種問(wèn)題(Vs訪問(wèn)正常)的部分處理方法詳細(xì)整理
在vs中調(diào)試都可以正常,但是在iis訪問(wèn)就會(huì)出現(xiàn)各種問(wèn)題,很是疑惑索性把這些問(wèn)題整理一下,這樣更容易的可以處理方法說(shuō)明清楚,感興趣的朋友可以了解下2013-01-01asp.net ajaxControlToolkit ValidatorCalloutExtender的簡(jiǎn)單用法
今天偶爾用到這個(gè)控件,簡(jiǎn)單記錄下~~~~2008-11-11Visual Studio for Mac版 初體驗(yàn)
這篇文章主要介紹了Visual Studio for Mac版 初體驗(yàn),本文圖文并茂給大家介紹的非常詳細(xì),需要的朋友可以參考下2017-05-05C#將DataTable轉(zhuǎn)化為L(zhǎng)ist<T>
本文給大家講解的是如何使用C#將DataTable數(shù)據(jù)源轉(zhuǎn)化為L(zhǎng)ist<T>泛型集合(已知T類(lèi)型) 的方法和示例,有需要的小伙伴可以參考下2015-06-06ASP.NET 修復(fù) IIS 映射具體實(shí)現(xiàn)步驟
本文主要介紹IIS映射的具體步驟,希望對(duì)大家有所幫助。2016-05-05asp.net中Null在從數(shù)據(jù)庫(kù)讀取的時(shí)候的一點(diǎn)點(diǎn)小技巧
我們先看下面的一段代碼,這段代碼其實(shí)很平常,也是我們平時(shí)做項(xiàng)目很常用的一段2012-04-04ASP.NET對(duì)IIS中的虛擬目錄進(jìn)行操作的代碼
在做系統(tǒng)開(kāi)發(fā)的過(guò)程中,我們經(jīng)常會(huì)遇到用asp.net來(lái)操作IIS,如新建虛擬目錄、更改虛擬目錄的屬性、刪除虛擬目錄等操作,現(xiàn)在分析如下2012-10-10.NET微信公眾號(hào)開(kāi)發(fā)之準(zhǔn)備工作
本文是.NET微信公眾號(hào)開(kāi)發(fā)系列文章的第一篇,主要給大家簡(jiǎn)單介紹下微信公眾號(hào)的一些操作,有需要的小伙伴可以參考下。2015-07-07