承接上篇,本文提供 AppLogProvider 的七大內建渲染器完整配置範本、自訂渲染器擴充指南、緩衝機制、多實例並行記錄與動態配置載入技術,構建生產級日誌系統的完整參考手冊。
// 1. 實例化指定渲染器
LogProvider lp = new LogProvider(Appenders.File); // 或自訂名稱 "YourName"
// 2. 建構日誌實體
LogEntity le = new LogEntity();
le.Exception = "IsLine Test";
le.Message = "OK";
// 3. 寫入日誌
lp.WriteLog(le);
<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)
<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)
<OracleUsingSPRender> ... <AppenderType>Text</AppenderType> ...
<AppenderContent>"INSERT INTO IsLineFAppLog ... VALUES ('@eventDate', '@level', ...)"</AppenderContent>
LogProvider lp = new LogProvider(Appenders.OracleUsingText)
<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)
<section name="SQLServerUsingTextRender" ... />
<SQLServerUsingTextRender> ... <AppenderType>Text</AppenderType> ...
<AppenderContent>"INSERT INTO IsLineFAppLog ... VALUES ('@eventDate', '@level', ...)"</AppenderContent>
LogProvider lp = new LogProvider(Appenders.SQLServerUsingText)
<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 設定(見下方注意事項)。
<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")
<add key="IsLine.AppLog.Configuration.BufferSize" value="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
LogProvider lp = new LogProvider(); // 無參數建構
Hashtable ha = lp.GetLogConfiguration("YourRenderName");
string content = ha["AppenderContent"].ToString();
// 實作 IAppLogProvider 介面完成自訂寫入邏輯
AppenderInf 引用的 key 需在 <appSettings> 定義
<add key="IsLine.Data.Configuration.OracleConnectString"
value="Data Source=TNS_NAME;User;Password=111111;..." />
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>
AppLogProvider 以「渲染器抽象介質、配置驅動行為、緩衝提升效能、多實例並行、動態擴充」五大特性,實現了超越 Log4Net 的靈活度。掌握七大渲染器配置範本,即可應對絕大多數企業級日誌需求。