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

IsLine Framework 系列之八:AppLogProvider 日誌框架(下)—— 完整配置大全與多渲染器實戰

     編輯:關於.NET

承接上篇,本文提供 AppLogProvider 的七大內建渲染器完整配置範本、自訂渲染器擴充指南、緩衝機制、多實例並行記錄與動態配置載入技術,構建生產級日誌系統的完整參考手冊。

1. 核心程式碼模式

// 1. 實例化指定渲染器
LogProvider lp = new LogProvider(Appenders.File); // 或自訂名稱 "YourName"

// 2. 建構日誌實體
LogEntity le = new LogEntity();
le.Exception = "IsLine Test";
le.Message = "OK";

// 3. 寫入日誌
lp.WriteLog(le);

2. 七大內建渲染器完整配置

2.1 檔案文字渲染器

<section name="FileRender" type="IsLine.Data.Configuration.SuitConfig" />
<FileRender>
  <AppenderStyle>File</AppenderStyle>
  <AppenderType>Text</AppenderType>
  <AppenderInf>IsLineLog/Log4Net1.txt</AppenderInf>
  <AppenderContent>->Event Date:@eventDate;->Level:@level;->Message:@exception;...</AppenderContent>
  <Level>Warn</Level>
</FileRender>

LogProvider lp = new LogProvider(Appenders.File)

2.2 Oracle 預存程式渲染器

<section name="OracleUsingSPRender" type="IsLine.Data.Configuration.SuitConfig" />
<OracleUsingSPRender>
  <AppenderStyle>Oracle</AppenderStyle>
  <AppenderType>StoredProcedure</AppenderType>
  <AppenderInf>IsLine.Data.Configuration.OracleConnectString</AppenderInf>
  <AppenderContent>SP_ADD_ILFWLOG.ADD_ILFWLOG</AppenderContent>
  <Level>Debug</Level>
</OracleUsingSPRender>

LogProvider lp = new LogProvider(Appenders.OracleUsingSP)

2.3 Oracle SQL 語句渲染器

<OracleUsingSPRender> ... <AppenderType>Text</AppenderType> ...
<AppenderContent>"INSERT INTO IsLineFAppLog ... VALUES ('@eventDate', '@level', ...)"</AppenderContent>

LogProvider lp = new LogProvider(Appenders.OracleUsingText)

2.4 SQL Server 預存程式渲染器

<section name="SQLServerUsingSPRender" ... />
<SQLServerUsingSPRender>
  <AppenderStyle>SQLServer</AppenderStyle>
  <AppenderType>StoredProcedure</AppenderType>
  <AppenderInf>IsLine.Data.Configuration.SQLConnectString</AppenderInf>
  <AppenderContent>SP_ADD_ILFWLOG.ADD_ILFWLOG</AppenderContent>
  <Level>Debug</Level>
</SQLServerUsingSPRender>

LogProvider lp = new LogProvider(Appenders.SQLServerUsingSP)

2.5 SQL Server SQL 語句渲染器

<section name="SQLServerUsingTextRender" ... />
<SQLServerUsingTextRender> ... <AppenderType>Text</AppenderType> ...
<AppenderContent>"INSERT INTO IsLineFAppLog ... VALUES ('@eventDate', '@level', ...)"</AppenderContent>

LogProvider lp = new LogProvider(Appenders.SQLServerUsingText)

2.6 郵件渲染器

<section name="MailRender" ... />
<MailRender>
  <AppenderStyle>Mail</AppenderStyle>
  <AppenderType>HTML</AppenderType>
  <AppenderInf>收件人信箱</AppenderInf>
  <AppenderContent>郵件內容:@eventDate, @level, @source, @trigger, @message, @exception</AppenderContent>
  <LayoutInf></LayoutInf>
  <Level>Debug</Level>
</MailRender>

LogProvider lp = new LogProvider(Appenders.Mail)

額外需配置 SMTP 設定(見下方注意事項)。

2.7 自訂渲染器

<section name="YourName" type="IsLine.Data.Configuration.SuitConfig" />
<YourName>
  <AppenderStyle>SQLServer</AppenderStyle>
  <AppenderType>Text</AppenderType>
  <AppenderInf>IsLine.Data.Configuration.SQLConnectString</AppenderInf>
  <AppenderContent>"INSERT INTO ... VALUES ('@eventDate', ...)"</AppenderContent>
  <Level>Debug</Level>
</YourName>

LogProvider lp = new LogProvider("YourName")

3. 進階功能

3.1 緩衝機制

<add key="IsLine.AppLog.Configuration.BufferSize" value="2" />
  • 累積達閾值才批次寫入,提升效能
  • 預設關閉,需額外配置啟用

3.2 多渲染器並行記錄

<sectionGroup name="IsLine.AppLog.Configuration">
  <section name="FileRender" ... />
  <section name="OracleUsingSPRender" ... />
</sectionGroup>
// 同時配置兩個渲染器區塊

// 程式碼
LogProvider lp1 = new LogProvider(Appenders.File);
LogProvider lp2 = new LogProvider(Appenders.SQLServerUsingSP);
lp1.WriteLog(le);
lp2.WriteLog(le); // 同一筆日誌同時寫入檔案與 Oracle

3.3 動態取得配置資訊(擴充自訂介質)

LogProvider lp = new LogProvider(); // 無參數建構
Hashtable ha = lp.GetLogConfiguration("YourRenderName");
string content = ha["AppenderContent"].ToString();
// 實作 IAppLogProvider 介面完成自訂寫入邏輯

4. 關鍵注意事項

  1. 資料庫連接字串:AppenderInf 引用的 key 需在 <appSettings> 定義
    <add key="IsLine.Data.Configuration.OracleConnectString" 
             value="Data Source=TNS_NAME;User;Password=111111;..." />
  2. 郵件渲染器:依賴 IsLine.Message.Configuration.SendMail 區段
    <sectionGroup name="IsLine.Message.Configuration">
      <section name="SendMail" type="IsLine.Data.Configuration.SuitConfig" />
    </sectionGroup>
    <IsLine.Message.Configuration>
      <SendMail>
        <Sender>帳號</Sender> <SenderPwd>密碼</SenderPwd>
        <SMTPAddr>smtp.server</SMTPAddr> <SMTPPort>25</SMTPPort>
        <EnableSsl>False</EnableSsl> <MailEncode>UTF32</MailEncode>
        <IsBodyHtml>True</IsBodyHtml> <IsSendAsync>False</IsSendAsync>
      </SendMail>
    </IsLine.Message.Configuration>
  3. sectionGroup 與 Configuration 區塊必須一一對應,可多組並存

5. 結語

AppLogProvider 以「渲染器抽象介質、配置驅動行為、緩衝提升效能、多實例並行、動態擴充」五大特性,實現了超越 Log4Net 的靈活度。掌握七大渲染器配置範本,即可應對絕大多數企業級日誌需求。

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