從零開始編寫本身的C#框架(20)——框架異常處理及日誌記錄

  最近很忙,瑣事也多,因此開發本框架也是斷斷續續的,終於在前兩天將前面設定的功能都基本完成了,剩下一些小功能遺漏的之後發現再補上。接下來的章節主要都是講解在本框架的基礎上進行開發的小巧。數據庫

 

  本框架主要有四種日誌記錄,分別是登錄日誌、操做日誌、手動收集異常日誌和自動收集異常日誌四種,大部分日誌採集都不用開發者動手實現,在模板與相關的功能類中已自動幫咱們將所須要的日誌記錄下來了。後端

 

  登錄日誌,記錄的固然是用戶登錄、退出、在線時長的日誌,主要是在登錄(Login.aspx)、後端首頁(Main.aspx,有一個退出按鈕)和在線列表(OnlineUsersList.aspx,有踢除用戶下線按鈕)等幾個頁面使用,所使用到的邏輯層函數放在LoginLogBll.cs(用戶登錄日誌自定義邏輯類)與OnlineUsersBll.cs(OnlineUsersBll邏輯類)兩個文件中。登錄頁面主要是記錄用戶登錄系統的日誌信息,而其餘頁面則是記錄用戶退出系統的日誌信息,同時記錄在線時長。固然後端首頁有個定時器,會每分鐘更新用戶最後在線時間,以便用戶退出系統時(或直接關閉瀏覽器後),相關的程序能及時記錄用戶退出信息及在線時長。瀏覽器

 

  操做日誌,記錄的是用戶在後端管理系統中,什麼時間打開了那個頁面,而後進行的是添加、修改、刪除記錄、更新狀態、刪除圖片、踢除用戶下線......等各類操做信息。方便出現問題時,管理人員能快捷的查出操做人員追究對應責任;也方便領導查看後端相關人員有沒有使用系統,分析系統推廣效果(不少OA或企業管理系統在企業購買回來後,很多員工都很抵觸不去使用系統,形成花了不少錢購買來的系統成爲擺設,固然這個操做記錄並不能對這種狀況的改善有很大的幫助,但至少讓相關人員知道員工對系統的使用狀況,哈哈...)安全

  對於操做日誌的記錄,開發人員基本上不用去編寫代碼,由於在生成的模板函數中已全面的記錄各類操做日誌,除非自定義的函數中並無去調用模板生成的添加、修改、刪除等函數,直接使用SubSonic3.0插件接口或ADO.NET接口,那樣的話就得本身編寫代碼記錄了。而對於用戶進入過那些頁面的記錄,因爲後端系統開發的頁面都必須繼承PageBase類,每一個後端頁面打開時,都會運行該類的初始化函數,該初始化函數中會調用CommonBll.UserRecord(this)函數,忠誠的記錄下用戶的操做軌跡。服務器

  具體實現代碼你們能夠查看邏輯層生成的模板函數類,裏面全部添加、修改、刪除、更新函數,都會調用UseLogBll.GetInstence().Save()這個函數,記錄用戶進行了什麼樣的操做。而自定義函數想要記錄用戶操做說明,也能夠直接調用這個函數,寫上自定義操做說明。併發

 

  手動收集異常日誌,對於異常,有的朋友建議都將它拋出來,這樣的話容易發現Bug,而後進行修復,但都是這樣處理的話,用戶體驗就會比較差,因此我通常是數據層將異常拋出來,在邏輯層或UI層將它們都捕捉起來,而後在catch塊中調用CommonBll.WriteLog("異常說明", e)把異常記錄到文件中,當系統交付給使用方時,使用人員進行某些操做時,萬一出現異常也只是顯示失敗或操做不了,而不會拋出黃頁,須要維護時,只要使用方將軟件或網站根目錄下的Data文件夾打包發給開發人員便可分析查看異常問題所在。框架

  固然對於那些須要很是詳細的日誌記錄的程序,也能夠將每一步執行的結果調用日誌函數記錄下來,方便開發人員分析問題。函數

  對於手動收集異常的調用代碼,你們能夠查看邏輯層(Solution.Logic.Managers)的SubSonic文件夾下面的模板類和UI層代碼。學習

 

  自動收集異常日誌,顧名思義就是自動記錄全部咱們沒有捕捉到的異常。雖然咱們上面已作了異常捕捉處理,但不免有些地方會忘記捕捉,那麼咱們就在全局異常處理那裏將它記錄下來。咱們在Global.asax文件的Application_Error()函數中進行異常採集,收集服務器端頁面發生的全部異常,調用自定義函數ErrorLogBll.GetInstence().Save()將它們記錄到數據庫中。測試

 

  經過以上四種日誌記錄,基本上將咱們須要的信息都記錄了下來,協助咱們排查安全問題、排查各類錯誤。

 

解決方案下載:(本解決方案忘了將以前註釋掉的權限打開了...下次處理後再從新發出來吧)

因爲框架不是很是成熟,不少朋友不是用來學習而是直接用到項目中,但不熟悉框架引發很多小問題,因此中止提供下載,有須要學習的能夠到羣共享裏下,不便之處敬請諒解。

 

說明:試過有朋友將全部章節中的解決方案都使用前面測試例子中的數據庫,因此一直顯示不了列表,因此查看事後才知道數據庫沒有記錄引發的......因此在這裏說明一下,在開發過程當中,根據須要我會對數據表或字段進行增改操做,爲了不寫太多的更新SQL語句,因此每一個章節所配的數據庫只是對應本章節,你們使用新的解決方案時就從新附加新的數據庫。你們打開數據字典就會查看到,幾乎對數據字典的每一個修改我都有記錄下來,方便你們比對。

 

 版權聲明:

  本文由AllEmpty原創併發佈於博客園,歡迎轉載,未經本人贊成必須保留此段聲明,且在文章頁面明顯位置給出原文連接,不然保留追究法律責任的權利。若有問題,能夠經過1654937@qq.com 聯繫我,很是感謝。

 

  發表本編內容,只要主爲了和你們共同窗習共同進步,有興趣的朋友能夠加加Q羣:327360708 ,你們一塊兒探討。

 

  更多內容,敬請觀注博客:http://www.cnblogs.com/EmptyFS/

相關文章
相關標籤/搜索