專利名稱:一種通用系統(tǒng)日志管理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種通用系統(tǒng)日志管理方法,為軟件系統(tǒng)各模塊提供統(tǒng)一的書寫、查詢接口,規(guī)范日志格式。
背景技術(shù):
目前,在一個復(fù)雜的軟件系統(tǒng)中,會包含很多應(yīng)用模塊,每個模塊都需要書寫自己的日志。為了方便的查詢?nèi)罩荆枰鱾€模塊寫的日志在格式上要盡量統(tǒng)一,存放方式盡量集中,歷史日志可以長久保存。在現(xiàn)有的系統(tǒng)中,一般是采用各個模塊直接寫文件的方式。首先,由于操作文件要遠比操作內(nèi)存慢,受到系統(tǒng)IO性能的影響,直接寫文件必然會損耗系統(tǒng)的一些效率。其次,由于系統(tǒng)中存在很多個模塊,他們必然會并發(fā)寫日志,如果采用寫各自不同日志文件的方式,則日志文件比較分散,大小不均勻,也無法直觀的展現(xiàn)在某一時刻所有模塊的運行情況;如果采用寫同一個日志文件的方式,由于并發(fā)的原因,又需要增加文件鎖,勢必更加影響系統(tǒng)的效率。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是設(shè)計一種通用系統(tǒng)日志管理方法,提供統(tǒng)一的寫日志函數(shù)供應(yīng)用系統(tǒng)中各個模塊調(diào)用,同時提供統(tǒng)一的日志查詢接口,從而保證整個系統(tǒng)的日志格式完全規(guī)范統(tǒng)一,便于分析與查看。本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下一種通用系統(tǒng)日志管理方法,包括如下步驟步驟I :事先創(chuàng)建三塊同樣大小的日志共享內(nèi)存和三個同樣大小的日志文件;步驟2 :寫日志時,查找當前正在使用的日志共享內(nèi)存;步驟3 :判斷當前日志共享內(nèi)存是否寫滿;步驟4 :如果否,日志內(nèi)容直接寫入當前日志共享內(nèi)存,然后結(jié)束;如果是,日志內(nèi)容寫入下一日志共享內(nèi)存,并將當前正在使用的內(nèi)存塊序號改為下一塊;執(zhí)行步驟5 ;步驟5 :如果所有日志共享內(nèi)存已經(jīng)寫滿日志,判斷當前日志文件是否寫滿,如果否,自動將相關(guān)日志內(nèi)容記錄到當前日志文件中,然后清空日志共享內(nèi)存的內(nèi)容,以備下一次切換時使用;如果是,執(zhí)行步驟6 ;步驟6 :因當前日志文件寫滿則自動切換到下一個日志文件,并將當前正在使用的文件序號改為下一個;執(zhí)行步驟7 ;步驟7 :如果所有日志文件已經(jīng)寫滿日志,自動將相關(guān)日志內(nèi)容記錄到歸檔文件中,然后清空日志文件,以備下一次切換時使用;每個日志文件寫入到一個單獨的歸檔文件中,歸檔文件名中含有當前系統(tǒng)時間,然后結(jié)束。本發(fā)明的有益效果是所有模塊調(diào)用統(tǒng)一的寫日志函數(shù),保證整個系統(tǒng)的日志格式完全規(guī)范統(tǒng)一,便于分析與查看。應(yīng)用模塊直接將日志內(nèi)容寫入共享內(nèi)存,相比于傳統(tǒng)的寫文件的方式,本發(fā)明的速度更快。通過循環(huán)使用三塊共享內(nèi)存的方式,使得日志管理進程可以在空閑時間將暫時未使用的共享內(nèi)存中的日志信息轉(zhuǎn)移到日志文件中,避免對應(yīng)用模塊產(chǎn)生干擾。由于是三塊內(nèi)存循環(huán)使用,所以本發(fā)明僅需要占用較少的系統(tǒng)內(nèi)存即可,不會造成對內(nèi)存空間的浪費。進一步,日志文件也采用三個統(tǒng)一大小的日志文件,循環(huán)使用,每個日志文件寫滿后,會自動將日志內(nèi)容寫到歸檔文件中,便于永久保存。進一步,每個日志文件寫入到一個單獨的歸檔文件中,歸檔文件名中含有當前系統(tǒng)時間,便于日志查詢時根據(jù)時間段查找,每個歸檔文件的尺寸可控,方便快速讀取。
圖I為本發(fā)明的寫日志的流程圖;圖2為本發(fā)明的日志管理的流程具體實施例方式以下結(jié)合附圖對本發(fā)明的原理和特征進行描述,所舉實例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。本發(fā)明的通用系統(tǒng)日志管理方法,包括如下步驟步驟I :事先創(chuàng)建三塊同樣大小的日志共享內(nèi)存和三個同樣大小的日志文件;步驟2 :寫日志時,查找當前正在使用的日志共享內(nèi)存;步驟3 :判斷當前日志共享內(nèi)存是否寫滿;步驟4 :如果否,日志內(nèi)容直接寫入當前日志共享內(nèi)存,然后結(jié)束;如果是,日志內(nèi)容寫入下一日志共享內(nèi)存,并將當前正在使用的內(nèi)存塊序號改為下一塊;執(zhí)行步驟5 ;步驟5 :如果所有日志共享內(nèi)存已經(jīng)寫滿日志,判斷當前日志文件是否寫滿,如果否,自動將相關(guān)日志內(nèi)容記錄到當前日志文件中,然后清空日志共享內(nèi)存的內(nèi)容,以備下一次切換時使用;如果是,執(zhí)行步驟6 ;步驟6 :因當前日志文件寫滿則自動切換到下一個日志文件,并將當前正在使用的文件序號改為下一個;執(zhí)行步驟7 ;步驟7 :如果所有日志文件已經(jīng)寫滿日志,自動將相關(guān)日志內(nèi)容記錄到歸檔文件中,然后清空日志文件,以備下一次切換時使用;每個日志文件寫入到一個單獨的歸檔文件中,歸檔文件名中含有當前系統(tǒng)時間,然后結(jié)束。在步驟4中,如圖I所示,應(yīng)用模塊調(diào)用下列寫日志函數(shù)寫日志void APIffriteLog(int log_code, long procid, int module, int level, int type, char氺logbuf);各參數(shù)說明如下
權(quán)利要求
1.一種通用系統(tǒng)日志管理方法,包括 步驟I :事先創(chuàng)建三塊同樣大小的日志共享內(nèi)存和三個同樣大小的日志文件;步驟2 :寫日志時,查找當前正在使用的日志共享內(nèi)存;步驟3 :判斷當前日志共享內(nèi)存是否寫滿;步驟4 :如果否,日志內(nèi)容直接寫入當前日志共享內(nèi)存,然后結(jié)束;如果是,日志內(nèi)容寫入下一日志共享內(nèi)存,并將當前正在使用的內(nèi)存塊序號改為下一塊;執(zhí)行步驟5 ;步驟5 :如果所有日志共享內(nèi)存已經(jīng)寫滿日志,判斷當前日志文件是否寫滿,如果否, 自動將相關(guān)日志內(nèi)容記錄到當前日志文件中,然后清空日志共享內(nèi)存的內(nèi)容,以備下一次切換時使用;如果是,執(zhí)行步驟6 ;步驟6 :因當前日志文件寫滿則自動切換到下一個日志文件,并將當前正在使用的文件序號改為下一個;執(zhí)行步驟7 ;步驟7:如果所有日志文件已經(jīng)寫滿日志,自動將相關(guān)日志內(nèi)容記錄到歸檔文件中,然后清空日志文件,以備下一次切換時使用;每個日志文件寫入到一個單獨的歸檔文件中,歸檔文件名中含有當前系統(tǒng)時間,然后結(jié)束。
2.根據(jù)權(quán)利要求I所述的通用系統(tǒng)日志管理方法,其特征在于應(yīng)用程序?qū)懭罩緯r,僅操作共享內(nèi)存,不涉及到寫文件,確保寫日志的動作不會對應(yīng)用程序的效率造成影響。
3.根據(jù)權(quán)利要求I所述的通用系統(tǒng)日志管理方法,其特征在于三塊共享內(nèi)存循環(huán)使用,一塊寫滿后,則切換到下一塊。
4.根據(jù)權(quán)利要求I所述的通用系統(tǒng)日志管理方法,其特征在于三個日志文件循環(huán)使用,一個日志文件寫滿后,則切換到下一個。
5.根據(jù)權(quán)利要求I所述的通用系統(tǒng)日志管理方法,其特征在于每個日志文件寫滿后, 會自動將日志內(nèi)容寫到歸檔文件中,以便永久保存。
6.根據(jù)權(quán)利要求I所述的通用系統(tǒng)日志管理方法,其特征在于每個日志文件寫入到一個單獨的歸檔文件中,歸檔文件名中含有當前系統(tǒng)時間,便于日志查詢時根據(jù)時間段查找,每個歸檔文件的尺寸可控,能夠快速讀取。
全文摘要
本發(fā)明涉及一種通用系統(tǒng)日志管理方法,創(chuàng)建三塊同樣大小的日志共享內(nèi)存和三個日志文件組。每塊共享內(nèi)存寫滿后自動切換到下一塊共享內(nèi)存并進行清倉,相關(guān)日志內(nèi)容記錄到日志文件中;日志文件寫滿后自動切換到下一個日志組文件并進行日志文件歸檔。本日志管理方法提供統(tǒng)一的寫日志函數(shù)供應(yīng)用系統(tǒng)中各個模塊調(diào)用,同時提供統(tǒng)一的日志查詢接口,從而保證整個系統(tǒng)的日志格式完全規(guī)范統(tǒng)一,便于分析與查看。
文檔編號G06F17/30GK102609484SQ201210018119
公開日2012年7月25日 申請日期2012年1月19日 優(yōu)先權(quán)日2012年1月19日
發(fā)明者王金山 申請人:北京神州數(shù)碼思特奇信息技術(shù)股份有限公司