ASP.NET Core擴(kuò)展庫之Http日志的使用詳解
最佳實踐都告訴我們不要記錄請求的詳細(xì)日志,因為這有安全問題,但在實際開發(fā)中,請求的詳細(xì)內(nèi)容對于快速定位問題卻是非常重要的,有時也是系統(tǒng)的強(qiáng)力證據(jù)。Xfrogcn.AspNetCore.Extensions擴(kuò)展庫提供了服務(wù)端和客戶端的詳細(xì)日志功能,通過配置可以開啟。
服務(wù)端日志通過請求中間件來完成,中間件會以Trace級別記錄請求和應(yīng)答詳情,以Debug級別記錄請求耗時。服務(wù)的請求日志的名稱為ServerRequest.Logger
要開啟服務(wù)端詳情日志,只需將擴(kuò)展庫配置中的ServerRequestLevel屬性設(shè)置為Verbose級別,該配置默認(rèn)是Information,故不會記錄請求詳情及請求耗時。
開啟請求詳情后,由于需要讀取請求和應(yīng)答的詳細(xì)內(nèi)容,對性能將有所影響。同時,由于要讀取請求體,將自動開啟請求的緩沖。只有在需要記錄詳細(xì)日志時,才會讀取詳情,故關(guān)閉后對于性能不會產(chǎn)生太大影響。
客服端的請求詳細(xì)日志,是基于IHttpClientFactory以及HttpClient框架,在客戶端請求管道處理中加入了日志記錄管道。請求處理管道會以Trace級別記錄請求和應(yīng)答詳情,另外,如果請求發(fā)生異常,將以Error級別記錄異常詳情??蛻舳苏埱笕罩镜拿Q為ClientRequest.Logger
要開啟客戶端請求詳細(xì)日志,只需將擴(kuò)展庫配置中的EnableClientRequestLog設(shè)置為true,同時將ClientRequestLevel設(shè)置為Verbose,該設(shè)置的默認(rèn)值為Information。與服務(wù)端一樣,只有在符合條件時才會記錄請求與應(yīng)答詳情,故如果未開啟,對性能不會產(chǎn)生影響。注意,當(dāng)EnableClientRequestLog設(shè)置為false時,擴(kuò)展庫不會將日志請求管道插入客戶端請求管道中。該設(shè)置默認(rèn)為true。
一、開啟服務(wù)端請求日志
要在服務(wù)端開啟請求詳細(xì)日志,只需引用Xfrogcn.AspNetCore.Extensions庫,然后在Startup類中,配置服務(wù)請求級別為Verbose:
public void ConfigureServices(IServiceCollection services) { services.AddExtensions(Configuration, config=> { config.FileLog = true; config.ConsoleLog = true; // 設(shè)置服務(wù)端請求日志級別為Verbose config.ServerRequestLevel = Serilog.Events.LogEventLevel.Verbose; }); services.AddControllers(); }
二、開啟客戶端請求日志
要開啟客戶端日志,只需引用Xfrogcn.AspNetCore.Extensions庫,然后在Startup類中,配置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ì)示例請參考GitHub
Xfrogcn.AspNetCore.Extensions地址:GitHub Gitee
以上就是ASP.NET Core擴(kuò)展庫之Http日志的使用詳解的詳細(xì)內(nèi)容,更多關(guān)于ASP.NET Core擴(kuò)展庫之Http日志的資料請關(guān)注腳本之家其它相關(guān)文章!
- ASP.NET?Core記錄日志
- ASP.Net?Core中的日志與分布式鏈路追蹤
- ASP.NET Core使用NLog記錄日志
- ASP.NET Core使用Log4net實現(xiàn)日志記錄功能
- ASP.NET Core使用NLog輸出日志記錄
- ASP.NET Core擴(kuò)展庫之日志功能的使用詳解
- Asp.Net Core用NLog記錄日志操作方法
- Asp.Net Core輕松學(xué)之利用日志監(jiān)視進(jìn)行服務(wù)遙測詳解
- ASP.NET Core開發(fā)教程之Logging利用NLog寫日志文件
- ASP.NET Core 2.0 WebApi全局配置及日志實例
- 詳解ASP.NET Core應(yīng)用中如何記錄和查看日志
- ASP.NET?Core使用自定義日志中間件
相關(guān)文章
asp.net對URL含有中文參數(shù)的轉(zhuǎn)換
asp.net的傳參中經(jīng)常使用到中文參數(shù)的處理,下面的函數(shù)可以解決中文參數(shù)的問題2008-03-03iis訪問出現(xiàn)各種問題(Vs訪問正常)的部分處理方法詳細(xì)整理
在vs中調(diào)試都可以正常,但是在iis訪問就會出現(xiàn)各種問題,很是疑惑索性把這些問題整理一下,這樣更容易的可以處理方法說明清楚,感興趣的朋友可以了解下2013-01-01asp.net ajaxControlToolkit ValidatorCalloutExtender的簡單用法
今天偶爾用到這個控件,簡單記錄下~~~~2008-11-11ASP.NET 修復(fù) IIS 映射具體實現(xiàn)步驟
本文主要介紹IIS映射的具體步驟,希望對大家有所幫助。2016-05-05asp.net中Null在從數(shù)據(jù)庫讀取的時候的一點點小技巧
我們先看下面的一段代碼,這段代碼其實很平常,也是我們平時做項目很常用的一段2012-04-04