開發(fā)1個MVC的Web程序,然后,將其發(fā)布,用戶開始使用我們的程序,使用的進程中出現(xiàn)了相應(yīng)的毛病,直接跳轉(zhuǎn)到了毛病頁,用戶問我們怎樣回事,我們當(dāng)時1般是不知道怎樣回事,要是知道的話,就改了,那末,我們應(yīng)當(dāng)怎樣著的快速的找到問題,并且,修改它呢?
有人說我們可以進行相應(yīng)的調(diào)試,連接人家的http://www.vxbq.cn/db/,取得上線相應(yīng)版本的程序,然后才調(diào)試,這個1般行不通,上線程序的數(shù)據(jù)都是實際的數(shù)據(jù)(安全性很高),并且,對權(quán)限的控制是非常高,你要是僅僅1個調(diào)試,就能夠取得人家的所有數(shù)據(jù),換做誰,也不會讓你這么干的。那末,我們應(yīng)當(dāng)怎樣做呢?此時,毛病日志的作用就出來了,它可以幫助我們快速的肯定問題,這個也就是本篇博客的主題:毛病日志處理。
方案1:對每一個可能出錯的地方,我們都寫1套方案,讓其保存在相應(yīng)的毛病文件中。
對每個可能出錯的地方,我們都需要自己寫1段重復(fù)的代碼,這個不言而喻的不好,最最少我們應(yīng)當(dāng)將其抽象成1個類
方案2:自定義1個毛病處理類,繼承HandleErrorAttribute,并在Global中進行相應(yīng)的注冊,實現(xiàn)程序出現(xiàn)毛病時,并且,拋到這個層上,就會自動履行里面的方法,到達1個全局毛病處理的效果,此時,我們將寫入毛病文件的代碼寫在這里,就能夠?qū)崿F(xiàn)全局同享的作用了。
對上述那種方式,不是很好,由于,只能通過1種方式進行毛病的記錄,假設(shè),人家說,將毛病信息寫到http://www.vxbq.cn/db/中,那末就非常的麻煩。
方案3:使用視察者+spring.net實現(xiàn)多種毛病日志記錄的方式。
視察者模式可使我們的視察者的類型可以有很多,spring.net可使這些類型的創(chuàng)建,通過配置文件弄定的,到達1種通過修改修改1些配置就ok的效果。
上面的那種方式,看似沒有問題了,其實不然,如果,對用戶量非常大的程序來講,程序中的1個小毛病也會被放大無窮倍,就是說,同1時間內(nèi),使用你這個程序,并且,在這個點出現(xiàn)毛病的人數(shù)非常多,這些都需要往毛病日志或http://www.vxbq.cn/db/中寫,那末,這個寫的進程就會變的非常的慢。
方案4:將毛病信息記錄先記錄在隊列中,然后,另從線程池中開啟1個線程,不斷的從隊列中取數(shù)據(jù),并且履行寫操作。
這個方案大大減輕了用戶等待毛病日志寫的時間,但是,還是存在1個問題,這個問題也能夠說是方案3種遺留下來的,那就是,毛病日志記錄的方式太多了,我們都寫了?如果都要寫的話,這個確切是1個不小的工程。
方案5:使用log4net進行相應(yīng)的毛病信息的記錄,程序中引入log4net程序集,然后,我們通過設(shè)置配置文件,就能夠?qū)崿F(xiàn)多種毛病日志的記錄方式,并且,這些代碼的保護,不需要我們寫,1個字爽。
毛病日志不是用戶業(yè)務(wù)的需求,但是,確切程序不可或缺的1部份。
上一篇 Web Worker在WebKit中的實現(xiàn)機制
下一篇 【iOS開發(fā)-66】QQ設(shè)置界面的案例:利用storyboard開發(fā)靜態(tài)的tableView界面,核心是Static Cells