轉發時請註明原創作者及地址,否則追究責任。 原創:alunchen 當創建AspNetCore項目時 當我們創建一個AspNetCore項目時,需要我們手動添加Log: services.AddLoging(); 我們發現,Log在微軟原生的包Microsoft.Extensions.Logging... ...
轉發時請註明原創作者及地址,否則追究責任。
原創:alunchen
當創建AspNetCore項目時
當我們創建一個AspNetCore項目時,需要我們手動添加Log:
services.AddLoging();
我們發現,Log在微軟原生的包Microsoft.Extensions.Logging、Microsoft.Extensions.Logging.Configuration內。並且創建ASPNetCore項目時,NetCore SDK已經包括了這兩個Log的原生包。
使用類庫
目前本人在微軟原生日誌類庫的基礎之上,寫了一個Log的擴展。目的是為了更好地擴展Log。當我們需要自定義自己的Log記錄方式時,使用此庫是你的明智選擇。
類庫地址信息
Nuget地址:https://www.nuget.org/packages/Alun.AspNetCore.Log.Extensions
GitHub開源地址:https://github.com/cjt321/Alun.AspNetCore.Log.Extensions
怎麼使用此類庫?
首先,引用Nuget包的地址。在項目啟動時,添加Log的配置。
services.AddLogging(cfg => { cfg.AddNvLog(new LogConfiguration(){UseTraceLog = false, UseDebugLog = true, UseInformationLog = true, UseErrorLog = true, UseCriticalLog = true}) .AddDefaultWriteLog(); });
在AddNvLog方法中,Log級別可配置:UseTraceLog、UseDebugLog、UseInformationLog、UseErrorLog、UseCriticalLog。 如果為true,則執行相應的Log。
那麼什麼時候記錄Log呢?
很簡單,就像我們平時在NetCore中記錄Log一樣即可,無任何修改。可在源碼WebApplicationDemo中看到記錄Log。
擴展類庫
當我們需要擴展日誌以自己的邏輯記錄到文件、隊列、MySql、Mongodb等持久化時,可以擴展類庫,擴展也很簡單。
對於mongodb擴展類庫,nuget上也有個包,但是此包只能滿足一般的需求,對於複雜的需求還不能滿足,需要用戶自己擴展自己的邏輯。
以Alun.AspNetCore.Log.Extensions.MongoDb為例
此包是對Log保存在Mongodb中。
此包在Nuget:https://www.nuget.org/packages/Alun.AspNetCore.Log.Extensions.MongoDb
1)安裝Alun.AspNetCore.Log.Extensions的nuget,因為這裡需要用到mongodb,所以安裝MongoDB.Driver。
2)添加mongodb的writelog類,來繼承IWriteLog。
註意,我們在WriteLog方法中寫日誌,記錄到mongodb中,此方法實現的是我們需要自定義的邏輯。這裡把日誌通過實體方法,持久化。
為何要繼承IWriteLog?因為我們需要用到自己的邏輯,繼承此類為了使用DI/IOC時,可以直接註入繼承IWriteLog的類。
眾所周知,使用DI/IOC時。有一好處,所有的對象都存放在容器上,如果需要修改容器裡面對象,則可以通過註入的方式修改。對於繼承,我們可以註入介面與實現類的方式,靈活變更實現類。
所以,我們需要在容器上初始化IWriteLog與MongoDbWriteLog的關係。
3)添加擴展配置
我們主要看初始化mongodb的writelog配置,這裡在容器中註入了IWriteLog, MongoDbWriteLog的繼承關係。
如何使用?
很簡單,可查看WebApplicationDemo.MongoDb中,加入Mongdb的配置即可:
擴展類庫的原理
使用依賴註入,註入我們需要的Log邏輯類,如Mongdb中的MongoDbWriteLog。所以,需要擴展,只需要繼承IWriteLog,並且註入,就能擴展類了,很方便。
總結
讀了本編文章的上部分時,慢慢會發現,使用Log擴展,就行完積木游戲一樣,你想怎麼‘組合’、怎麼‘拆’都可以。如果你想把Log保存在隊列,即實現IWriteLog,並且註入到容器中即可。如果你想把Log保存在Mongodb,一樣的邏輯。所以,任意地組合,很方便。
以上,都是Net Core正在發展的方向:低耦合、高內聚。在Log中提現了。並且預設自帶了依賴註入,依賴註入的好處有很多,可查看本人的依賴註入文章系列。
可以關註本人的公眾號,多年經驗的原創文章共用給大家。