日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET Core 沉思录 - Logging 的两种介入方法

發布時間:2023/12/4 asp.net 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET Core 沉思录 - Logging 的两种介入方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ASP.NET Core 中依賴注入是一個很重要的環節。因為幾乎所有的對象都是由它創建的(相關文章請參見《ASP.NET Core 沉思錄 - ServiceProvider 的二度出生》)。因此整個日志記錄的相關類型也被直接添加到了 IServiceCollection 中。今天我們將介紹各個接口/類型之間的關系,并找到介入日志記錄功能的兩個主要的入口。

ASP.NET Core 的日志功能結構

為什么當我們恰當對日志進行配置之后就可以記錄日志呢。那是因為 Framework 一定已經將最關鍵的類型添加到了 IServiceCollection 中。在 ASP.NET Core 中,應用程序的啟動一定會創建 WebHost 而創建 WebHost 一般會用到 WebHostBuilder。在 WebHostBuilder 創建過程中就將一些核心的日志記錄相關類型添加到了 IServiceCollection 中。

前面我們介紹過,IServiceProvider 有兩次創建過程,一次是在調用 WebHostBuilder.Build 時創建的 Hosting 相關的 IServiceProvider,另一次是在 WebHost.StartXxx 方法時創建的應用程序使用的 IServiceProvider。而日志相關類型第一次的 IServiceProvider 創建之前就已經添加到 IServiceCollection 中了。

在本文寫作時,第一次 IServiceCollection 實例的創建是在 WebHostBuilder.BuildCommonServices 方法中,大概的流程是:

  • 創建 ServiceCollection

  • 調用 AddLogging 擴展方法

  • 將 IOptions<>; 及其它形式、ILoggerFactory、ILogger<>、IConfigurator、IConfigureOptions 添加到 ServiceCollection 中。

  • 如果在配置 IWebHostBuilder 過程中調用過 ConfigureLogging 則調用相關委托添加或替換相關日志記錄的類型。

代碼請參見:WebHostBuilder.cs (https://github.com/aspnet/AspNetCore/blob/master/src/Hosting/Hosting/src/WebHostBuilder.cs) 以及LoggingServiceCollectionExtensions.cs (https://github.com/aspnet/Extensions/blob/master/src/Logging/Logging/src/LoggingServiceCollectionExtensions.cs)。

因此,以上提到的類型就是日志功能的核心類型了。梳理一下這些類型的依賴關系就可以弄清 ASP.NET Core 的日志功能結構了。

弄清一個結構需要關注兩個部分的內容,第一個部分是聲明上的依賴關系(靜態),另一個部分是調用上的依賴關系(動態)。因此我們也會采用這種方式進行梳理。首先聲明上的依賴關系如下:

以上結構在運行時會創建三層 ILogger 實現

  • 最外面的一層就是我們使用的 ILogger<> 實現。它是由 IServiceProvider 直接創建的。

  • 第二層是 LoggerFactory 創建的 Logger,它是一個組合 Logger。

  • 第三層是由 ILoggerProvider 實現創建的負責具體記錄日志的 ILogger 實現。這些 Logger 都會添加到第二層的組合 Logger 中。

而后,在日志記錄時,正是按照這三層結構進行任務分發的。

介入日志功能的幾個入口

在了解上述結構之后不難使用我們的具體實現替換默認的 .NET 日志記錄結構。首先在使用上 ASP.NET Core 上使用的日志記錄接口有兩種,第一種即 ILoggerFactory,進而創建 ILogger。例如 這里。而另外一種則是直接使用 ILogger<>。因此我們的介入點有兩個:

  • 直接替換 ILoggerFactory 的實現,這樣可以完全定義自己的 Logger -> Sink 結構和過濾邏輯;但工作量較大。

  • 實現 ILoggerProvider,并將其添加到 IServiceCollection 中。這樣可以復用現有的日志邏輯。

很多第三方日志庫就是有選擇的采用了上述一種或者兩種方式。例如,以 Serilog 為例,它支持上述兩種接口:

首先、我們可以使用 webHostBuilder.UseSerilog(...) 的方式將其納入應用程序中。而這種方式使用第一種介入方法。具體代碼請看:https://github.com/serilog/serilog-aspnetcore/blob/dev/src/Serilog.AspNetCore/SerilogWebHostBuilderExtensions.cs。

其次、我們可以使用 loggerBuilder.AddSerilog(...) 的方式將其納入應用程序中。而這種方式使用第二種介入方法。具體代碼請看:https://github.com/serilog/serilog-extensions-logging/blob/dev/src/Serilog.Extensions.Logging/SerilogLoggingBuilderExtensions.cs。

總結

日志記錄有很多可以思考的地方,今天我們只關注 ASP.NET Core 中日志介入的入口。總結起來有兩個主要入口:

  • 第一、直接替換 ILoggerFactory 實現;

  • 第二、實現具體的 ILoggerProvider 并將其添加到 IServiceCollection 中。

如果您覺得本文對您有幫助,也歡迎分享給其他的人。我們一起進步。歡迎關注我的博客(https://clrdaily.com)和微信公眾號:



總結

以上是生活随笔為你收集整理的ASP.NET Core 沉思录 - Logging 的两种介入方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲宅男天堂 | 亚洲成av人片一区二区 | 日韩高清一二三区 | 18xxxx日本 | 麻豆视频在线免费看 | 久久精品美女 | 蜜臀av一区二区三区 | 新x8x8拨牐拨牐永久免费影库 | 综合网伊人 | 日韩欧美中文一区 | 少妇逼逼| 精品人妻无码一区二区三区 | 91老师片黄在线观看 | 日韩成人在线视频 | 久久综合狠狠综合久久综合88 | 久久久综合网 | 色婷婷aⅴ | 亚洲自拍网站 | 久久久久久国产精品一区 | 你懂的在线观看视频 | 久久蜜桃精品 | 亚洲人妻一区二区三区 | 激情五月色综合国产精品 | 四虎永久地址 | 男男肉耽高h彩漫 | 香蕉免费在线视频 | 炕上如狼似虎的呻吟声 | 在线观看免费黄视频 | 久久久一区二区三区四区 | 国产91片 | 制服丝袜中文字幕在线 | 国产a√| 性做久久久久久 | 99re在线视频免费观看 | 午夜色播 | 日韩欧美爱爱 | 男人的天堂2018 | 亚洲色图36p | 国产视频最新 | 午夜极品视频 | 九七精品| 理想之城连续剧40集免费播放 | 森林影视官网在线观看 | 黄色a视频 | 亚洲欧洲国产综合 | 麻豆蜜臀 | 亚洲色偷偷色噜噜狠狠99网 | 午夜高潮| 亚洲一区二区三区在线观看视频 | 国产精品久久久久久久久久久新郎 | 在线观看国产三级 | 免费黄视频在线观看 | 亚洲国产精品久久久久久 | 在线免费观看视频网站 | 91在线视频播放 | 野外做受又硬又粗又大视频√ | 91精品国产91久久久久久黑人 | 日本xxxx在线观看 | 加勒比在线免费视频 | 尤物视频在线观看 | 国产精品国产三级国产aⅴ中文 | 亚洲高清一区二区三区 | 日韩激情国产 | 少妇学院在线观看 | 光棍影院av | 华人永久免费视频 | 国产精品麻豆欧美日韩ww | 亚洲天堂aaa | 国产黄色片在线播放 | 国产区免费观看 | 国产精品无码一区二区三区免费 | 国产成人av一区二区三区不卡 | 99热6这里只有精品 三级av在线免费观看 | 久草国产在线观看 | 毛茸茸日本熟妇高潮 | 一级片播放 | 老牛影视av一区二区在线观看 | 91av网址| 在线观看亚洲a | 亚洲一二三在线 | 肥臀熟女一区二区三区 | 欧美熟妇精品黑人巨大一二三区 | 97免费人妻无码视频 | 天天操狠狠操 | 国产一区二区在线免费 | 三上悠亚在线一区二区 | 夜夜添无码一区二区三区 | 日韩福利在线播放 | 女同动漫免费观看高清完整版在线观看 | 91影视在线观看 | 国产精品二 | 女女百合高h喷汁呻吟玩具 www.亚洲一区 | 欧美在线一区二区三区 | 成人精品福利视频 | 暗呦丨小u女国产精品 | 草久久久 | 超碰95在线 | 欧美精品免费在线 | 色哟哟精品观看 |