首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

IsLine Framework 系列之七:AppLogProvider 日誌框架(上)—— 架構設計與渲染器核心模型

     編輯:關於.NET

日誌與異常是系統上線後的「聽診器」與「黑盒子」。IsLine Framework 的 AppLogProvider 以渲染器抽象輸出介質、配置驅動行為、分級過濾、緩衝批次寫入四大核心設計,實現了比 Log4Net 更靈活、零程式碼修改即可切換記錄目標的企業級日誌框架。

1. 設計動機:為什麼不直接用 Log4Net?

  • 需為不同程式元素(類別、方法、業務流程)指定獨立日誌屬性
  • 運行期需動態切換記錄介質(檔案 ↔ 資料庫)無需重編譯
  • 需支援緩衝批次寫入以平衡效能與即時性
  • 需支援自訂介質(甚至輸出到電視機)的擴充機制

2. 核心優勢

  • 渲染器組件化:定義輸出介質、方式、路徑、格式、等級
  • 靈活等級控制:部署後透過等級快速切換業務區塊記錄開關
  • 緩衝機制:累積達閾值批次寫入,減少 I/O 衝擊
  • 純配置驅動:切換介質、格式、等級零程式碼修改
  • 精確輸出控制:減少雜訊,提升分析效率

3. 渲染器核心模型

<OracleUsingSPRender>
  <AppenderStyle>Oracle</AppenderStyle>      <!-- 附加方式:File/Oracle/SQLServer/Mail -->
  <AppenderType>StoredProcedure</AppenderType> <!-- 附加類型:Text/StoredProcedure/HTML -->
  <AppenderInf>IsLine.Data.Configuration.OracleConnectString</AppenderInf> <!-- 附加資訊:路徑/連線字串key -->
  <AppenderContent>SP_ADD_ILFWLOG.ADD_ILFWLOG</AppenderContent> <!-- 附加內容:SP名稱/SQL語句/郵件模板 -->
  <LayoutInf></LayoutInf>                     <!-- 版面資訊 -->
  <Level>Debug</Level>                       <!-- 記錄等級 -->
</OracleUsingSPRender>

3.1 內建渲染器清單

渲染器名稱說明
OracleUsingSPRenderOracle 預存程式記錄
OracleUsingTextRenderOracle SQL 語句記錄
SQLServerUsingSPRenderSQL Server 預存程式記錄
SQLServerUsingTextRenderSQL Server SQL 語句記錄
FileRender文字檔記錄
MailRender郵件發送記錄

3.2 等級優先順序

Off > Fatal > Error > Debug > Warn > Info > All
  • 全域等級:<add key="IsLine.AppLog.Configuration.Level" value="Debug" />
  • 渲染器等級 >= 全域等級 才會記錄

渲染器模型圖

4. 命名空間與類別架構

IsLine.AppLog.AppLogProvider 共 9 個類別,涵蓋配置、功能、列舉三大類:

AppLogProvider 基礎類別關係 AppLogProvider 擴充類別關係 ExceptionProcessProvider 類別關係

5. 日誌實體模型

標準化 6 大欄位,對應資料庫欄位或檔案佔位符:

日誌實體模型

欄位佔位符說明
EventDate@eventDate事件時間
Level@level日誌等級
Source@source來源
Trigger@trigger觸發者
Message@message自訂訊息
Exception@exception異常詳情

6. 運作流程

  1. 上層呼叫 WriteLog(LogEntity)
  2. 載入指定渲染器配置
  3. 依等級過濾判斷是否記錄
  4. 渲染器格式化內容(置換佔位符)
  5. 透過 Appender 寫入目標介質

7. 結語

AppLogProvider 以「渲染器」為核心抽象,將日誌記錄的「什麼、哪裡、怎麼記」完全外部化配置。下一篇將提供七大內建渲染器的完整配置範本、自訂渲染器擴充、緩衝與多實例並行實戰。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved