專利名稱:一種基于文件系統(tǒng)的日志存儲(chǔ)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理技術(shù),具體地說,是涉及日志存儲(chǔ)方法,更具體地說,是涉及一種基于文件系統(tǒng)的日志存儲(chǔ)方法。
背景技術(shù):
日志可以記錄操作發(fā)生的具體時(shí)間和相關(guān)的信息,以機(jī)頂盒為例,可以記錄開機(jī)的全過程、用戶的換臺(tái)、按鍵、信號(hào)檢測(cè)、搜臺(tái)、設(shè)置、進(jìn)入/退出某功能頁面等操作。通過日志,可以為系統(tǒng)死機(jī)或者崩潰現(xiàn)場(chǎng)保留最后的有效記錄,便于開發(fā)人員或者維護(hù)人員根據(jù)相關(guān)信息及時(shí)快速地分析、定位死機(jī)或崩潰的位置和原因,從而大大縮減開發(fā)和維護(hù)的時(shí)間,節(jié)省人力資源成本。
現(xiàn)有機(jī)頂盒、手機(jī)等嵌入式設(shè)備中為了存儲(chǔ)日志,通常采用Flash方式,該方式需要對(duì)硬件Flash進(jìn)行操作來實(shí)現(xiàn)。由于Flash以塊或扇區(qū)為操作單元,各塊或扇區(qū)如果要寫入數(shù)據(jù),首先需要擦除,而擦除的最小單位必須是塊或扇區(qū);而且,在塊或扇區(qū)中存儲(chǔ)時(shí), 可能會(huì)出現(xiàn)跨塊或扇區(qū)存儲(chǔ)的情況,因此,直接操作Flash寫入日志過程復(fù)雜,寫入速度較慢,使用不方便。發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種基于文件系統(tǒng)的日志存儲(chǔ)方法,通過設(shè)置日志文件、 將日志以日志記錄的形式存儲(chǔ)到日志文件中,并借助于文件系統(tǒng)對(duì)日志文件進(jìn)行存儲(chǔ)管理,降低了日志管理復(fù)雜度,提高了日志的存儲(chǔ)速度。
為實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明采用下述技術(shù)方案予以實(shí)現(xiàn)一種基于文件系統(tǒng)的日志存儲(chǔ)方法,其特征在于,設(shè)置日志文件,將需要存儲(chǔ)的日志以日志記錄的形式寫入至日志文件中,利用文件系統(tǒng)管理日志文件和存儲(chǔ)設(shè)備,并將日志文件中的日志存儲(chǔ)到存儲(chǔ)設(shè)備中。
如上所述的方法,為便于日志的使用,所述日志記錄包括記錄時(shí)間字段、記錄內(nèi)容字段和記錄結(jié)束標(biāo)志字段。
優(yōu)選的,所述記錄結(jié)束標(biāo)志為回車字符。
如上所述的方法,為避免丟失日志,在所述日志文件中新寫入的日志記錄大于設(shè)定數(shù)量時(shí),控制所述文件系統(tǒng)將日志文件中的日志記錄寫入到所述存儲(chǔ)設(shè)備中。
如上所述的方法,可以采用下述方法將當(dāng)前日志記錄寫入至所述日志文件中 計(jì)算當(dāng)前日志記錄的長(zhǎng)度;判斷日志文件剩余空間能否存放當(dāng)前日志記錄;在剩余空間能存放當(dāng)前日志記錄時(shí),將當(dāng)前日志記錄根據(jù)寫指針位置寫入至剩余空間;否則,將寫指針移動(dòng)到最早寫入的日志記錄的首地址,將當(dāng)前日志記錄從該首地址開始寫入。
如上所述的方法,為提高日志存儲(chǔ)的安全性,在將當(dāng)前日志記錄寫入到所述日志文件中之后,將寫指針保存到獨(dú)立于日志文件的索引文件中;在下次寫入日志記錄時(shí),從索引文件中讀取與指針。
如上所述的方法,為便于調(diào)整日志記錄的寫入速度、防止因大量無效或重復(fù)記錄的寫入而占用日志文件存儲(chǔ)空間及降低Flash讀寫速度,在寫入當(dāng)前日志記錄之前,首先判斷日志記錄的寫入頻率是否大于設(shè)定的采樣頻率;若寫入頻率大于采樣頻率,則判斷當(dāng)前日志記錄是否需要丟棄,若丟棄,放棄當(dāng)前日志記錄的寫入,否則,將當(dāng)前日志記錄寫入至所述日志文件。
如上所述的方法,日志記錄可根據(jù)隨機(jī)數(shù)來選擇性丟棄、以保證盡可能多地保存有用記錄,具體來說,可以采用下述方法判斷當(dāng)前日志記錄是否需要丟棄在設(shè)定的隨機(jī)數(shù)取值范圍內(nèi)獲取隨機(jī)數(shù),根據(jù)隨機(jī)數(shù)與隨機(jī)數(shù)取值范圍及所述設(shè)定的采樣頻率的大小關(guān)系判斷與隨機(jī)數(shù)相對(duì)應(yīng)的當(dāng)前日志記錄是否需要丟棄。
優(yōu)選的,在當(dāng)前日志記錄相對(duì)應(yīng)的隨
機(jī)數(shù)不小于所述隨機(jī)數(shù)取值范圍與所述設(shè)定的采樣頻率之差時(shí),判定當(dāng)前日志記錄需要丟棄。
如上所述的方法,為提高處理速度,在所述日志記錄的寫入頻率大于所述設(shè)定的采樣頻率時(shí),首先設(shè)置溢出標(biāo)志,然后再判斷當(dāng)前日志記錄是否需要丟棄。
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)和積極效果是通過設(shè)置日志文件、將日志以日志記錄的形式存儲(chǔ)到日志文件中,并借助于文件系統(tǒng)對(duì)日志文件進(jìn)行存儲(chǔ)管理,降低了日志管理復(fù)雜度,提高了日志的存儲(chǔ)速度。
結(jié)合附圖閱讀本發(fā)明的具體實(shí)施方式
后,本發(fā)明的其他特點(diǎn)和優(yōu)點(diǎn)將變得更加清λ·Μ/E. ο
圖1本發(fā)明基于文件系統(tǒng)的日志存儲(chǔ)方法一個(gè)實(shí)施例的流程圖;圖2本發(fā)明基于文件系統(tǒng)的日志存儲(chǔ)方法另一個(gè)實(shí)施例的流程圖;圖3是圖2實(shí)施例中調(diào)整日志記錄寫入頻率的一個(gè)具體流程圖。
具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明的技術(shù)方案作進(jìn)一步詳細(xì)的說明。
首先,簡(jiǎn)要說明本發(fā)明的技術(shù)思路現(xiàn)有機(jī)頂盒、手機(jī)等嵌入式設(shè)備一般都采用 Linux操作系統(tǒng),具有虛擬文件系統(tǒng)VFS,支持文件操作,并能夠利用VFS對(duì)物理存儲(chǔ)設(shè)備進(jìn)行統(tǒng)一分配和管理?;诖?,本發(fā)明提出了設(shè)置日志文件、將日志以日志記錄的形式寫入至日志文件中的日志存儲(chǔ)方法。對(duì)于日志文件,就可以利用文件系統(tǒng)進(jìn)行管理,并通過文件系統(tǒng)將日志存儲(chǔ)到Flash等存儲(chǔ)設(shè)備上。如此一來,開發(fā)人員只需要指定日志文件、將設(shè)備軟件運(yùn)行過程中產(chǎn)生的日志寫入到日志文件中,在使用日志時(shí),也僅需要從日志文件中讀取即可,無需關(guān)心如何從存儲(chǔ)設(shè)備上如何讀和寫,這些工作全部通過文件系統(tǒng)來實(shí)現(xiàn),從而能夠降低日志管理復(fù)雜度,減少軟件開發(fā)人員的工作量,從軟件開發(fā)角度來看,有利于提高日志存儲(chǔ)速度,降低軟件開發(fā)成本。
請(qǐng)參考圖1,該圖1示出了本發(fā)明基于文件系統(tǒng)的日志存儲(chǔ)方法一個(gè)實(shí)施例的流程圖,該實(shí)施例以采用Linux系統(tǒng)的機(jī)頂盒存儲(chǔ)日志為例,機(jī)頂盒操作系統(tǒng)支持文件系統(tǒng),且根據(jù)系統(tǒng)運(yùn)行性能和Flash存儲(chǔ)設(shè)備的大小預(yù)先設(shè)置了一個(gè)存儲(chǔ)日志的日志文件。
如圖I所示,該實(shí)施例存儲(chǔ)日志的過程如下步驟101:流程開始。
步驟102 :計(jì)算當(dāng)前日志記錄的長(zhǎng)度。
在該實(shí)施例中,日志將以記錄的形式存儲(chǔ)到日志文件中。在以記錄形式存儲(chǔ)時(shí),日志記錄包括有依次排列的記錄時(shí)間字段、記錄內(nèi)容字段和記錄結(jié)束標(biāo)志字段。其中,記錄時(shí)間字段用來標(biāo)識(shí)日志發(fā)生的時(shí)間。利用該時(shí)間字段,一方面便于獲知日志何時(shí)發(fā)生,有利于對(duì)日志內(nèi)容進(jìn)行時(shí)間定位;另一方面,便于判斷不同日志發(fā)生的先后順序,以識(shí)別日志寫入到文件中的順序。記錄內(nèi)容字段為日志的具體內(nèi)容,一般以字符串的形式顯示日志內(nèi)容。記錄結(jié)束標(biāo)志字段用來標(biāo)志一條記錄的結(jié)束,優(yōu)選為回車字符字段。通過設(shè)置記錄結(jié)束標(biāo)志, 可以直接區(qū)分出一條完整的日志記錄,不僅便于日志的寫入,且在日志導(dǎo)出后,無需做額外的記錄與記錄之間的區(qū)分既可以保證有關(guān)人員正確進(jìn)行的日志瀏覽。對(duì)于包括有上述多個(gè)字段的當(dāng)前日志記錄來說,其長(zhǎng)度是所有字段的長(zhǎng)度總和。在寫入日志之前,首先計(jì)算當(dāng)前日志記錄的長(zhǎng)度,也即記錄中所有字段所占的總字節(jié)數(shù)。
步驟103 :判斷日志文件的剩余空間是否還足夠用來存放當(dāng)前日志記錄。若是,執(zhí)行步驟106 ;否則,執(zhí)行步驟104。
可采用下述方法判斷剩余空間是否足夠當(dāng)前寫指針的位置加上要寫入的當(dāng)前日志記錄的長(zhǎng)度是否大于日志文件的結(jié)束地址。若大于,說明剩余空間不足以存儲(chǔ)當(dāng)前日志記錄;否則,判定剩余空間足夠。
步驟104 :在日志文件的剩余空間不足時(shí),將寫指針移動(dòng)到最早寫入的日志記錄的首地址。
由產(chǎn)品文件管理系統(tǒng)性能及存儲(chǔ)設(shè)備容量等因素所限,分配來存儲(chǔ)日志的文件大小是有限的,為保證在有限存儲(chǔ)空間的文件中盡可能寫入有用日志,如果存儲(chǔ)空間不足,則將當(dāng)前日志記錄覆蓋最早寫入的記錄。具體來說,是將寫指針移動(dòng)到最早寫入的日志記錄的首地址。而且,可以根據(jù)日志記錄中的記錄時(shí)間字段中的時(shí)間來判斷哪條記錄時(shí)最早寫入的記錄。
步驟105 :將當(dāng)前日志記錄從該首地址開始寫入。然后,轉(zhuǎn)至步驟107。
步驟106 :在日志文件的剩余空間足夠時(shí),根據(jù)寫指針將當(dāng)前日志記錄寫入至剩余空間。然后,執(zhí)行步驟107。
步驟107 :利用文件系統(tǒng)將日志存儲(chǔ)到存儲(chǔ)設(shè)備中。
該步驟是文件系統(tǒng)自動(dòng)處理的過程,無需用戶參與。
步驟108 :流程結(jié)束。
在該實(shí)施例中,日志以記錄形式在日志文件中連續(xù)存儲(chǔ),實(shí)現(xiàn)了數(shù)據(jù)的緊縮存儲(chǔ), 可以有效利用日志文件的存儲(chǔ)空間來保存盡可能多的有效日志信息,為系統(tǒng)開發(fā)和維護(hù)提供更多、更可靠的現(xiàn)場(chǎng)保護(hù),便于在系統(tǒng)死機(jī)或崩潰時(shí)為相關(guān)人員提供快速定位故障位置及原因的依據(jù)。
請(qǐng)參考圖2,該圖2所示為本發(fā)明基于文件系統(tǒng)的日志存儲(chǔ)方法另一個(gè)實(shí)施例的具體流程圖。與圖I實(shí)施例類似,該實(shí)施例仍以采用Linux系統(tǒng)的機(jī)頂盒存儲(chǔ)日志為例,機(jī)頂盒操作系統(tǒng)支持文件系統(tǒng),且根據(jù)系統(tǒng)運(yùn)行性能和Flash存儲(chǔ)設(shè)備的大小預(yù)先設(shè)置了一個(gè)存儲(chǔ)日志的日志文件。
如圖2所示,該實(shí)施例存儲(chǔ)日志的具體過程為步驟201 :流程開始。
步驟202 :計(jì)算日志記錄的寫入頻率,并與設(shè)定采樣頻率相比較。
在該實(shí)施例中,考慮到某些情況下,可能會(huì)大量往日志文件中寫入無效或重復(fù)的日志記錄,因而大量占用日志文件的存儲(chǔ)空間,降低日志讀寫速度。由于日志文件存儲(chǔ)空間有限,不能存放大量的日志記錄信息,且若過快、過多地寫入日志信息,極容易沖掉了本來有用的信息,而存放的是一些重復(fù)或無效的信息,從而失去了記錄有效信息的目的?;谏鲜鲈?,為兼顧信息的存儲(chǔ)量和寫入的有效性,避免上述情形下系統(tǒng)性能的下降,可在存儲(chǔ)日志記錄時(shí)預(yù)設(shè)采樣頻率,用來限定單位時(shí)間內(nèi)可寫入的最大記錄數(shù)。在將日志記錄寫入在日志文件中之前,先計(jì)算記錄的寫入頻率。具體來說,可以采用下述方法來計(jì)算寫入頻率在系統(tǒng)內(nèi)部設(shè)置一個(gè)對(duì)應(yīng)采樣周期的定時(shí)器,在定時(shí)時(shí)間內(nèi),每寫入一條新日志記錄, 計(jì)數(shù)器會(huì)加1,當(dāng)?shù)竭_(dá)定時(shí)時(shí)間后,計(jì)數(shù)器的計(jì)數(shù)值即為采樣周期內(nèi)寫入的日志記錄數(shù)量, 根據(jù)定時(shí)時(shí)間和日志記錄數(shù)量可以計(jì)算出日志記錄的寫入頻率。然后,將該寫入頻率與預(yù)設(shè)的采樣頻率進(jìn)行比較。同時(shí),計(jì)數(shù)器清零,重新開始計(jì)數(shù)。
步驟203 :判斷寫入頻率是否大于采樣頻率。若是,執(zhí)行步驟204 ;否則,轉(zhuǎn)至步驟 205。
步驟204 :在寫入頻率大于采樣頻率時(shí),判斷是否要丟棄當(dāng)前日志記錄。若是,轉(zhuǎn)至步驟214,放棄當(dāng)前日志記錄的寫入,結(jié)束流程;若為否,執(zhí)行步驟205。
如果寫入頻率大于采樣頻率,則需要丟棄部分日志記錄,以調(diào)整寫入頻率,也即調(diào)整日志記錄的寫入速度,以確保日志存儲(chǔ)的性能。則,首先需要判斷當(dāng)前日志記錄是否需要丟棄。調(diào)整日志記錄寫入速度的具體過程可以參考圖3流程及下述對(duì)圖3的描述。
步驟205 :若當(dāng)前日志記錄不丟棄,則執(zhí)行當(dāng)前日志記錄的寫入。首先,計(jì)算當(dāng)前日志記錄的長(zhǎng)度,并從索引文件中讀取寫指針。
當(dāng)前日志記錄長(zhǎng)度的計(jì)算方法可以參考上述圖I實(shí)施例中的方法,在此不作復(fù)述。而在該實(shí)施例中,為提高日志存儲(chǔ)的安全性,除了設(shè)置日志文件之外,還設(shè)置了一個(gè)獨(dú)立于日志文件的索引文件,在該索引文件中存儲(chǔ)寫指針。通過設(shè)置單獨(dú)的文件存儲(chǔ)寫指針的目的在于,如果日志文件出現(xiàn)故障而無法獲取其內(nèi)的寫指針時(shí),仍可以從獨(dú)立的索引文件中獲取到寫指針,利用該寫指針可以執(zhí)行日志文件的恢復(fù)等操作,能保證日志存儲(chǔ)的安全性。因此,在設(shè)置有索引文件的情況下寫入日志記錄時(shí),可以從索引文件中讀取寫指針。
步驟206 :判斷日志文件的剩余空間是否還足夠用來存放當(dāng)前日志記錄。若是,執(zhí)行步驟209 ;否則,執(zhí)行步驟207。
步驟207 :在日志文件的剩余空間不足時(shí),將寫指針移動(dòng)到最早寫入的日志記錄的首地址。
步驟208 :將當(dāng)前日志記錄從該首地址開始寫入。然后,轉(zhuǎn)至步驟210。
步驟209 :在日志文件的剩余空間足夠時(shí),根據(jù)寫指針將當(dāng)前日志記錄寫入至剩余空間。然后,執(zhí)行步驟210。
上述幾個(gè)步驟的設(shè)置原理及具體實(shí)現(xiàn)可參考圖I實(shí)施例中相應(yīng)步驟的說明。
步驟210 :在完成當(dāng)前日志記錄的寫入之后,將寫指針保存到獨(dú)立于日志文件的索引文件中,以便于在下次寫入日志記錄時(shí)直接從索引文件中讀取寫指針來使用。
步驟211 :判斷新寫入日志記錄是否大于設(shè)定數(shù)量。若是,轉(zhuǎn)至步驟213 ;若否,執(zhí)行步驟212。
對(duì)于基于文件系統(tǒng)的日志存儲(chǔ)來說,用戶只需將日志寫入到日志文件中,此時(shí),日志是存儲(chǔ)在產(chǎn)品的內(nèi)存中。然后,通過產(chǎn)品的文件系統(tǒng)自動(dòng)將日志從內(nèi)存寫入到Flash存儲(chǔ)設(shè)備中。文件系統(tǒng)在將日志從內(nèi)存寫入到Flash中時(shí),一般是采用定時(shí)存儲(chǔ)或者是中斷存儲(chǔ)的方式,這樣就存在一個(gè)問題,如果定時(shí)時(shí)間未到、或者系統(tǒng)一直在運(yùn)行一個(gè)中斷級(jí)別更高的中斷任務(wù)而未執(zhí)行日志記錄的轉(zhuǎn)存時(shí),因?yàn)閿嚯姷仍驅(qū)е孪到y(tǒng)關(guān)機(jī),則會(huì)導(dǎo)致日志因沒有寫入到Flash中存儲(chǔ)而丟失,用戶后續(xù)就無法獲得這些丟失的日志記錄。為避免這些情況而導(dǎo)致的日志丟失,該實(shí)施例將強(qiáng)制在滿足設(shè)定條件時(shí)產(chǎn)生一個(gè)高級(jí)中斷,使得文件系統(tǒng)能夠處理日志記錄的轉(zhuǎn)存。具體來說,是在新寫入的日志記錄達(dá)到設(shè)定數(shù)量時(shí),強(qiáng)制產(chǎn)生高級(jí)中斷。同樣的,可以設(shè)置一個(gè)計(jì)數(shù)器,每寫入一條記錄計(jì)數(shù)器加I。在計(jì)數(shù)達(dá)到設(shè)定數(shù)量時(shí),強(qiáng)制產(chǎn)生高級(jí)中斷,同時(shí)將計(jì)數(shù)器清零,再對(duì)后面寫入的日志記錄計(jì)數(shù)。因此, 這里所說的新寫入日志記錄,是指計(jì)數(shù)器清理后、再次開始計(jì)數(shù)所對(duì)應(yīng)的日志記錄。
步驟212 :若新寫入日志記錄數(shù)量不大于設(shè)定數(shù)量,則利用文件系統(tǒng)自動(dòng)將日志存儲(chǔ)到存儲(chǔ)設(shè)備中,也即不執(zhí)行強(qiáng)制存儲(chǔ)的過程。然后,轉(zhuǎn)至步驟214結(jié)束。
步驟213 :如果新寫入日志記錄數(shù)量大于設(shè)定數(shù)量,則控制文件系統(tǒng)將日志文件中的日志記錄寫入到存儲(chǔ)設(shè)備中。然后,執(zhí)行步驟214。
在寫入時(shí),文件系統(tǒng)會(huì)自動(dòng)判斷之前已經(jīng)寫入的記錄,而僅將未寫入的記錄寫入進(jìn)去。
步驟214 :當(dāng)前日志記錄寫入流程結(jié)束。
請(qǐng)參考圖3,該圖3示出了圖2實(shí)施例中調(diào)整寫入頻率的一個(gè)具體流程圖。該流程圖同時(shí)示出了如何丟棄日志記錄,以保證寫入頻率滿足要求的方法。在該流程執(zhí)行之前,在存儲(chǔ)日志的初始化過程中,預(yù)設(shè)一個(gè)采樣頻率。
如圖3所示,調(diào)整寫入頻率的具體步驟如下步驟301 :統(tǒng)計(jì)寫入的日志記錄數(shù)量。
具體統(tǒng)計(jì)過程參考上述圖2中的相關(guān)步驟的說明。
步驟302 :判斷寫入頻率是否大于采樣頻率。若是,執(zhí)行步驟303 ;若否,轉(zhuǎn)至步驟 304。
步驟303 :在寫入頻率大于采樣頻率時(shí),設(shè)置溢出標(biāo)志,以便于根據(jù)該標(biāo)志對(duì)寫入頻率進(jìn)行相應(yīng)的調(diào)整。
步驟304 :判斷是否存在溢出標(biāo)志,并在存在溢出標(biāo)志時(shí)執(zhí)行步驟305,而不存在溢出標(biāo)志時(shí)執(zhí)行步驟307。
步驟305 :若存在溢出標(biāo)志,說明寫入頻率大于采樣頻率,此時(shí),需要通過丟棄部分記錄的手段來減少寫入頻率。在該實(shí)施例中,為保證盡可能多地保存有用記錄,采用隨機(jī)數(shù)的選擇方式來選擇性丟棄記錄數(shù)據(jù)。首先,在一定取值范圍內(nèi)獲取一個(gè)隨機(jī)數(shù)。例如,獲取0-100以內(nèi)的隨機(jī)數(shù)。
步驟306 :判斷隨機(jī)數(shù)是否大于等于取值范圍減去采樣頻率。若是,執(zhí)行步驟308 ; 若否,執(zhí)行步驟307。
步驟307 :若寫入頻率不大于采樣頻率,或者雖然寫入頻率大于采樣頻率,但待寫入的日志記錄對(duì)應(yīng)的隨機(jī)數(shù)小于取值范圍減去采樣頻率的值,則直接寫入日志記錄。
在寫入頻率大于采樣頻率時(shí),通過隨機(jī)數(shù)的獲取及上述計(jì)算,在其所對(duì)應(yīng)的隨機(jī)數(shù)小于取值范圍減去采樣頻率的值時(shí),認(rèn)為該隨機(jī)數(shù)對(duì)應(yīng)的日志記錄不能丟棄,因此將其寫入至日志文件中。
步驟308 :若待寫入的日志記錄對(duì)應(yīng)的隨機(jī)數(shù)大于等于取值范圍減去采樣頻率的值,則判定該日志記錄不再寫入至日志文件中,因此,丟棄該日志記錄,從而實(shí)現(xiàn)調(diào)整寫入頻率的目的。
當(dāng)然,除了采樣上述通過隨機(jī)數(shù)的選擇及計(jì)算判斷要丟棄的日志記錄之外,也還可以采用其他可行的方法來判斷,例如,采用固定間隔丟棄一個(gè)記錄的方式等。
以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其進(jìn)行限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,對(duì)于本領(lǐng)域的普通技術(shù)人員來說,依然可以對(duì)前述實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明所要求保護(hù)的技術(shù)方案的精神和范圍。
權(quán)利要求
1.一種基于文件系統(tǒng)的日志存儲(chǔ)方法,其特征在于,設(shè)置日志文件,將需要存儲(chǔ)的日志以日志記錄的形式寫入至日志文件中,利用文件系統(tǒng)管理日志文件和存儲(chǔ)設(shè)備,并將日志文件中的日志存儲(chǔ)到存儲(chǔ)設(shè)備中。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述日志記錄包括記錄時(shí)間字段、記錄內(nèi)容字段和記錄結(jié)束標(biāo)志字段。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述記錄結(jié)束標(biāo)志為回車字符。
4.根據(jù)權(quán)利要求I所述的方法,其特征在于,在所述日志文件中新寫入的日志記錄大于設(shè)定數(shù)量時(shí),控制所述文件系統(tǒng)將日志文件中的日志記錄寫入到所述存儲(chǔ)設(shè)備中。
5.根據(jù)權(quán)利要求I至4中任一項(xiàng)所述的方法,其特征在于,采用下述方法將當(dāng)前日志記錄寫入至所述日志文件中 計(jì)算當(dāng)前日志記錄的長(zhǎng)度; 判斷日志文件剩余空間能否存放當(dāng)前日志記錄; 在剩余空間能存放當(dāng)前日志記錄時(shí),將當(dāng)前日志記錄根據(jù)寫指針位置寫入至剩余空間;否則,將寫指針移動(dòng)到最早寫入的日志記錄的首地址,將當(dāng)前日志記錄從該首地址開始寫入。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,在將當(dāng)前日志記錄寫入到所述日志文件中之后,將寫指針保存到獨(dú)立于日志文件的索引文件中;在下次寫入日志記錄時(shí),從索引文件中讀取寫指針。
7.根據(jù)權(quán)利要求5所述的方法,其特征在于,在寫入當(dāng)前日志記錄之前,判斷日志記錄的寫入頻率是否大于設(shè)定的采樣頻率;若寫入頻率大于采樣頻率,則判斷當(dāng)前日志記錄是否需要丟棄,若丟棄,放棄當(dāng)前日志記錄的寫入,否則,將當(dāng)前日志記錄寫入至所述日志文件。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,采用下述方法判斷當(dāng)前日志記錄是否需要丟棄在設(shè)定的隨機(jī)數(shù)取值范圍內(nèi)獲取隨機(jī)數(shù),根據(jù)隨機(jī)數(shù)與隨機(jī)數(shù)取值范圍及所述設(shè)定的采樣頻率的大小關(guān)系判斷與隨機(jī)數(shù)相對(duì)應(yīng)的當(dāng)前日志記錄是否需要丟棄。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,在當(dāng)前日志記錄相對(duì)應(yīng)的隨機(jī)數(shù)不小于所述隨機(jī)數(shù)取值范圍與所述設(shè)定的采樣頻率之差時(shí),判定當(dāng)前日志記錄需要丟棄。
10.根據(jù)權(quán)利要求7所述的方法,其特征在于,在所述日志記錄的寫入頻率大于所述設(shè)定的采樣頻率時(shí),首先設(shè)置溢出標(biāo)志,然后再判斷當(dāng)前日志記錄是否需要丟棄。
全文摘要
本發(fā)明公開了一種基于文件系統(tǒng)的日志存儲(chǔ)方法,該方法設(shè)置日志文件,將需要存儲(chǔ)的日志以日志記錄的形式寫入至日志文件中,利用文件系統(tǒng)管理日志文件和存儲(chǔ)設(shè)備,并將日志文件中的日志存儲(chǔ)到存儲(chǔ)設(shè)備中。本發(fā)明通過設(shè)置日志文件、將日志以日志記錄的形式存儲(chǔ)到日志文件中,并借助于文件系統(tǒng)對(duì)日志文件進(jìn)行存儲(chǔ)管理,降低了日志管理復(fù)雜度,提高了日志的存儲(chǔ)速度。
文檔編號(hào)G06F12/02GK102981944SQ20121053357
公開日2013年3月20日 申請(qǐng)日期2012年12月12日 優(yōu)先權(quán)日2012年12月12日
發(fā)明者張淑巖 申請(qǐng)人:青島海信寬帶多媒體技術(shù)有限公司