本系列分為項目集成、項目部署、架構演進三個方向,後續會根據情況調整文章目錄。
本系列第一篇:Taurus.MVC V3.0.3 微服務開源框架發布:讓.NET 架構在大並發的演進過程更簡單。
Taurus.MVC 微服務框架 入門開發教程:項目集成:1、服務端:註冊中心、網關(提供可運行程式下載)。
Taurus.MVC 微服務框架 入門開發教程:項目集成:2、客戶端:ASP.NET(C#)程式語言項目集成:應用中心。
Taurus.MVC 微服務框架 入門開發教程:項目集成:3、客戶端:其它程式語言項目集成:應用中心。
Taurus.MVC 微服務框架 入門開發教程:項目集成:4、默認安全認證與自定義安全認證。
Taurus.MVC 微服務框架 入門開發教程:項目集成:5、統一的日誌管理。
Taurus.MVC 微服務框架 入門開發教程:項目集成:6、微服務的二次開發。
Taurus.MVC 微服務框架 入門開發教程:項目部署:1、微服務應用程式常規部署實現多開,節點擴容。
Taurus.MVC 微服務框架 入門開發教程:項目部署:2、讓Kestrel支援綁定多個域名轉發,替代Ngnix使用。
Taurus.MVC 微服務框架 入門開發教程:項目部署:3、微服務應用程式版本升級:全站升級和局部模組升級。
Taurus.MVC 微服務框架 入門開發教程:項目部署:4、微服務應用程式發布到Docker部署(上)。
Taurus.MVC 微服務框架 入門開發教程:項目部署:5、微服務應用程式發布到Docker部署(下)。
Taurus.MVC 微服務框架 入門開發教程:項目部署:6、微服務應用程式Docker部署實現多開。
Taurus.MVC 微服務框架 入門開發教程:架構演進:1、從單應用程式簡單過渡到負載均衡。
Taurus.MVC 微服務框架 入門開發教程:架構演進:2、負載均到模組拆分負載。
Taurus.MVC 微服務框架 入門開發教程:架構演進:3、模組拆分負載到多級負載均衡。
Taurus.MVC 微服務框架 入門開發教程:運行示例://github.com/cyq1162/Taurus.MVC.MicroService.Demo
前言:
對於微服務的日誌統一管理來說,除了把日誌統一發送到MQ,再進行統一處理之外。
也可以利用CYQ.Data的Log功能,統一寫資料庫。
CYQ.Data對日誌的寫是執行緒隊列寫,因此不用擔心高並發與執行阻塞問題。
Taurus.MVC 本身就引用了CYQ.Data,因此直接用即可,下面介紹簡單使用方法:
1、配置資料庫鏈接:LogConn
appsettings.json:配置如下:
{ "ConnectionStrings": { "LogConn": "server=.;database=MSLog;uid=sa;pwd=123456" }, "AppSettings": { "IsWriteLog": true } }
web.config:配置如下:
<configuration> <connectionStrings> <add name="LogConn" connectionString="txt path={0}App_Data"/> </connectionStrings> <appSettings> <add key="IsWriteLog" value="true"/> </appSettings> </configuration>
說明:
1、通過配置IsWriteLog,啟用寫日誌功能,默認false,異常會直接拋出來。
2、通過配置LogConn,指定資料庫,默認會檢測並創建SysLogs表,並進行日誌數據寫入。
2、配置資料庫鏈接(備):LogConn_Bak
appsettings.json:配置如下:
{ "ConnectionStrings": { "LogConn": "server=.;database=MSLog;uid=sa;pwd=123456"
"LogConn_Bak": "server=.;database=MSLog_bak;uid=sa;pwd=123456"
},
"AppSettings": {
"IsWriteLog": true
}
}
web.config:配置如下:
<configuration> <connectionStrings> <add name="LogConn" connectionString="txt path={0}App_Data/LogA/"/>
<add name="LogConn_bak" connectionString="txt path={0}App_Data/LogA_Bak/"/>
</connectionStrings>
<appSettings>
<add key="IsWriteLog" value="true"/>
</appSettings>
</configuration>
說明:
如果主資料庫了,默認鏈接會切換到備資料庫鏈接寫,避免日誌丟失。
3、自定義資料庫日誌表名:
appsettings.json:配置如下:
{ "ConnectionStrings": { "LogConn": "server=.;database=MSLog;uid=sa;pwd=123456"
"LogConn_Bak": "server=.;database=MSLog_bak;uid=sa;pwd=123456"
},
"AppSettings": { "IsWriteLog": true,
"LogTableName":"自定義微服務模組日誌表名" } }
web.config:配置如下:
<configuration> <connectionStrings> <add name="LogConn" connectionString="txt path={0}App_Data/LogA/"/>
<add name="LogConn_bak" connectionString="txt path={0}App_Data/LogA_Bak/"/>
</connectionStrings>
<appSettings>
<add key="IsWriteLog" value="true"/>
<add key="LogTableName" value="自定義日誌表名"/>
</appSettings>
</configuration>
說明:
對於資料庫,可以獨立一個日誌資料庫,但對於不同的微服務,可以採用不同的表名來區分監控日誌。
4、自定義資料庫日誌表名:按每天或每月生成一張表進行採集
在系統運行啟動之後,找個寫程式碼的地方:
1、按每天生成1張日誌表:
CYQ.Data.AppConfig.LogTableName="日誌表名"+DateTime.Now.ToString("yyyyMMdd");
2、按每月生成1張日誌表:
CYQ.Data.AppConfig.LogTableName="日誌表名"+DateTime.Now.ToString("yyyyMM");
3、按每年生成1張日誌表:
CYQ.Data.AppConfig.LogTableName="日誌表名"+DateTime.Now.ToString("yyyy");
說明:
為了避免日誌表長時間收集數據過大的問題,可以通過自定義表名,來達到區分。
通過在寫日誌之前,通過程式碼修改默認的配置表名,即可達到自定義分拆表的需求。
5、業務框架收集日誌的程式碼調用:
默認,調用簡單,在有需要的地方直接寫即可:
CYQ.Data.Log.Write(日誌資訊,分類名稱)
詳情介面:
public static partial class Log { public static void Write(Exception err) public static void Write(Exception err, string logType) public static void Write(string message) public static void Write(string message, string logType) }
6、默認生成的資料庫表結構與資訊:
說明:
除了錯誤資訊內容與分類名,系統還會收集上下文中的相關資訊,並進行一併記錄。
總結:
通過Taurus.MVC微服務框架默認提供的日誌功能,僅需要簡單配置,即可達到高性能的收集各種異常日誌或其它日誌。