Taurus.MVC 微服務框架 入門開發教程:項目集成:5、統一的日誌管理。

本系列分為項目集成、項目部署、架構演進三個方向,後續會根據情況調整文章目錄。

本系列第一篇: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微服務框架默認提供的日誌功能,僅需要簡單配置,即可達到高性能的收集各種異常日誌或其它日誌。