基於Ado.Net的日誌組件
阿新 • • 發佈:2017-11-07
字符 分析 執行時間 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的日誌組件