1. 程式人生 > >基於Ado.Net的日誌組件

基於Ado.Net的日誌組件

字符 分析 執行時間 mode 客戶端 結構 .exe 客戶 light

軟件開發,離不開對日誌的操作,它可以幫助我們查找和檢測問題。好的日誌組件可以對於整個系統來說,至關重要

在NaviSoft產品中,日誌組件也占有非常重要的份量。如下圖所示,是組件的Db表結構設計

技術分享

圖-1

登錄日誌:記錄系統的登錄信息,包括登錄用戶、登錄時間、客戶端信息

操作日誌:記錄每個功能操作信息,包括操作時間、內容和結果

異常錯誤日誌:當整個系統

方法日誌:記錄每個方法的名稱、參數、返回值、所在類和DLL等。用於分析方法執行時間,排查錯誤

API操作日誌:記錄API操作日誌

API異常錯誤日誌:記錄API執行異常日誌

API調用次數日誌:記錄API調用次數日誌,防止超出調用次數

臨時記錄表:記錄自定義的日誌內容,只有一個字符串,可隨意保存內容

整個日誌組件,采用Ado.Net方式與Db交互,這也是有原因的:NaviSoft本身是采用EF作為Db組件,若日誌也使用此組件,容易產生嵌套事務錯誤,如:保存日誌失敗時。部分源碼如下圖所示

        /// <summary>
        /// 保存登錄日誌
        /// </summary>
        /// <param name="modelLog"></param>
        public static void SaveLogon(loglogonBillModel modelLog)
        {
            if (modelLog == null) return;

            DbSqlAndParam dbSql = dbService.GeneSqlAndParamToInsert<loglogonBillModel>(modelLog, "log_logon");
            dbService.ExecSqlAndParamByTrans(new List<DbSqlAndParam>() { dbSql });
        }

另外,NaviSoft的日誌組件,也將log4net的源碼移植進來,如下圖所示

技術分享

圖-2

此日誌組件在NaviSoft產品體系中,同時應用於WinForm、WebMVC、Mobile三個場景的產品,後續將分別介紹NaviSoft的產品體系

基於Ado.Net的日誌組件