日志與異常
部署系統以後,管理員需要有一套強大的日志系統來診斷和修復配置上的問題,這就需要一套通過配 置就可以變更日志記錄的方式。經驗表明,日志模塊往往是軟件開發周期中的重要組成部分,Aicken曾用 過一段時間的Log4Net,Log4Net是個很不錯的日志框架,但是有時候仍然覺得有些不順手,例如,需要用 不同類型的日志記錄不同的類、方法的行為和不同的業務行為,有時需要在系統運行期,改變某個業務日 志的記錄介質或是否記錄等等,遇到這些因素 Log4Net可能需要修改代碼重新編譯,而IsLine FrameWork 的AppLogProvider模塊可以只修改配置文件就可滿足需求,它具有以下幾個優點:
它可以提供應用程序運行時的精確環境,可供開發人員盡快找到應用程序中的Bug;
一旦在程序中加入了Log 輸出代碼,程序運行過程中就能生成並輸出日志信息而無需人工干預。
不同的日志信息可以輸出到不同的地方(控制台、文件、數據庫等)以備以後研究之用。
這兩個Provider就是根據這些需求開發的,它們分別負責記錄系統中的運行日志與運行時異常,但是 IsLine框架的AppLogProvider比Log4Net更加靈活、易用,使用這個模塊的優點如下:
由Render組件來定義輸出介質。正如名字所示,這些組件把它們附加到日志組件上並將輸出傳遞到輸 出流中,可以把一個Appender組件附加到多個日志對象上。
靈活控制日志等級,在部署系統後,通過等級控制,快捷切換是否記錄某個業務塊的信息。
通過日志緩存的設定,使系統集中資源的收集日志和異常信息,當達到一定的閥值後,高效的寫入存 儲介質。
通過配置文件,可以快捷改變日志記錄介質(文件、數據庫),記錄所用到的技術,不需更改程序文件 ,只需改變配置文件。
使用者可以很精確地控制日志信息的輸出,減少了多余信息,提高了日志記錄性能。同時,通過外部 配置文件,用戶可以不用重新編譯程序就能改變應用的日志行為,使得用戶可以根據情況靈活地選擇要記 錄的信息。
在這兩個Provider中,有一個很重要的概念,就是“Render ”,Render是日志異常模塊的配置節點, 它決定了系統日志記錄的目標、記錄方式、路徑等信息,這些信息可以通過配置得出,它可以是數據庫、 文本文件、 XML文件,甚至是電視機,不過除了數據庫、文件這些內置Render外,其他記錄介質需要繼承 相關接口,然後擴展實現。
該Provider目前內置支持SQL SERVER、ORACLE、文本文件的記錄方式,並可使用sql語句或存儲過程為 記錄手段。
Render介紹:
這是一個Render實例
<OracleUsingSPRender>
<AppenderStyle>Oracle</AppenderStyle>
<AppenderType>StoredProcedure</AppenderType>
<AppenderInf>IsLine.Data.Configuration.OracleConnectString</AppenderInf>
<AppenderContent>SP_ADD_ILFWLOG.ADD_ILFWLOG</AppenderContent>
<LayoutInf></LayoutInf>
<Level>Debug</Level>
</OracleUsingSPRender>