專利名稱:一種日志搜索方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息檢索技術(shù)領(lǐng)域,尤其是涉及一種日志搜索方法和系統(tǒng)。
背景技術(shù):
目前NandFlash的主流文件系統(tǒng)是Yaf fs2,該文件系統(tǒng)具有占用內(nèi)存少和啟動快 等優(yōu)點,基于NandFlash的操作大都基于Yaffs2文件系統(tǒng)。通常,在Yaffs2文件系統(tǒng)中,日志是按時間順序進行存放的,這樣使用折半查找 算法可以快速搜索到指定時間段內(nèi)的日志。但是當(dāng)系統(tǒng)時間往前調(diào)整時(即調(diào)整后的系統(tǒng) 時間早于調(diào)整前的系統(tǒng)時間),就會導(dǎo)致日志的存儲不按時間順序進行排列,這樣就無法使 用折半查找算法,只能對所有日志文件進行遍歷,導(dǎo)致搜索時間過長,進一步的,會在內(nèi)存 中緩存大量的日志數(shù)據(jù),容易造成其他應(yīng)用程序分配內(nèi)存失敗。另外,現(xiàn)有Yaffs2文件系統(tǒng)在NandFlash內(nèi)容改寫或覆蓋時會出現(xiàn)內(nèi)容搬移,導(dǎo) 致效率低下,而且搬移時容易出現(xiàn)錯誤導(dǎo)致日志遭到破壞;以及,現(xiàn)有Yaffs2文件系統(tǒng)需 要通過目錄和文件名來訪問文件,一旦目錄項遭到破壞,就無法訪問相應(yīng)文件。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種日志搜索方法和系統(tǒng),以提高日志搜索的效率,減少內(nèi) 存中緩存的日志數(shù)據(jù),提高日志文件的安全性和可訪問性。本發(fā)明提供了一種日志搜索方法,NandFlash的每個已使用頁對應(yīng)的帶外OOB包 括一個時間段標記;每個時間段標記在整個NandFlash中是唯一的,每個時間段標記對應(yīng) 連續(xù)的至少一個頁,且一個時間段標記對應(yīng)的時間段內(nèi)日志按時間先后順序排列;系統(tǒng)內(nèi) 存中具有時間段索引,所述時間段索引包括時間段標記、以及與該時間段標記對應(yīng)的時間 段的開始時間和結(jié)束時間;在接收到搜索信息后,所述方法包括利用當(dāng)前時間段索引中時間段標記對應(yīng)的時間段的開始時間和結(jié)束時間,判斷 當(dāng)前時間段標記對應(yīng)的日志中是否包含符合所述搜索信息中的起始時間和終止時間的日 志;若是,則對當(dāng)前時間段標記對應(yīng)的日志進行折半查找,確定當(dāng)前時間段中符合所 述起始時間和終止時間的日志,并將符合所述搜索信息的日志加入搜索結(jié)果;將相鄰的下 一條時間段索引作為當(dāng)前索引,重復(fù)執(zhí)行所述判斷步驟;若否,則將相鄰的下一條時間段索引作為當(dāng)前索引,重復(fù)執(zhí)行所述判斷步驟;
當(dāng)符合搜索結(jié)束條件時,停止搜索,并將搜索結(jié)果中的日志返回。 本發(fā)明還提供了一種日志搜索系統(tǒng),NandFlash的每個已使用頁對應(yīng)的帶外OOB 包括一個時間段標記;每個時間段標記在整個NandFlash中是唯一的,每個時間段標記對 應(yīng)連續(xù)的至少一個頁,且一個時間段標記對應(yīng)的時間段內(nèi)日志按時間先后順序排列;所述 系統(tǒng)的內(nèi)存中具有時間段索引,所述時間段索引包括時間段標記、以及與該時間段標記對
4應(yīng)的時間段的開始時間和結(jié)束時間;所述系統(tǒng)還包括接收模塊,用于接收搜索信息;判斷模塊,用于利用當(dāng)前時間段索引中時間段標記對應(yīng)的時間段的開始時間和結(jié) 束時間,判斷當(dāng)前時間段標記對應(yīng)的日志中是否包含符合所述搜索信息中的起始時間和終 止時間的日志;查找模塊,用于當(dāng)所述判斷模塊的判斷結(jié)果為是時,對當(dāng)前時間段標記對應(yīng)的日 志進行折半查找,確定當(dāng)前時間段中符合所述起始時間和終止時間的日志,并將符合所述 搜索信息的日志加入搜索結(jié)果;將相鄰的下一條時間段索引作為當(dāng)前索引,重復(fù)調(diào)用所述 判斷模塊進行判斷;當(dāng)所述判斷模塊的判斷結(jié)果為否時,將相鄰的下一條時間段索引作為 當(dāng)前索引,重復(fù)調(diào)用所述判斷模塊進行判斷;返回模塊,用于當(dāng)符合搜索結(jié)束條件時,停止搜索,并將搜索結(jié)果中的日志返回。本發(fā)明的日志搜索方法和系統(tǒng),通過使用時間段標記將NandFlash中的日志按時 間段進行劃分,每個時間段中的日志都是按時間先后順序進行排列,使得日志搜索時可以 對每個時間段進行折半查找,大大提高日志搜索的效率,減少內(nèi)存中緩存的日志數(shù)據(jù);在日 志數(shù)量不足一頁且超過預(yù)設(shè)時間沒有新日志生成時,通過強制將日志寫入頁中,能夠避免 斷電造成的內(nèi)存中緩存日志的丟失,并避免在NandFlash內(nèi)容改寫或覆蓋時出現(xiàn)的內(nèi)容搬 移現(xiàn)象;本發(fā)明的日志搜索系統(tǒng)不采用文件系統(tǒng)以文件的方式訪問日志,即使某個塊出現(xiàn) 損壞也只是失去了該塊上的日志,其他塊上的日志不受影響,更大程度的保護日志的可訪 問性。
圖1是NandFlash的典型結(jié)構(gòu)示意圖;圖2是本發(fā)明的OOB結(jié)構(gòu)示意圖;圖3是本發(fā)明的日志搜索方法第一實施例的流程示意圖;圖4是本發(fā)明的日志搜索方法第二實施例的流程示意圖;圖5是本發(fā)明的日志搜索系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施例方式為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和具體實 施方式對本發(fā)明實施例作進一步詳細的說明。實施例一本實施例提供了 一種日志搜索方法。首先,參見圖1,為NandFlash的典型結(jié)構(gòu)。NandFlash包括多個塊(Block),每個 塊包括多個頁(Page),其中,塊是擦除的最小單位,頁是寫入數(shù)據(jù)的最小單位。NandFlash中,每一頁(Page)對應(yīng)一個區(qū)域,用于存放校驗的ECC (ErrorChecking Correction,錯誤檢查與糾正)數(shù)據(jù)和其他一些信息,比如上層文件系統(tǒng)存放的私有數(shù)據(jù), 這個區(qū)域通常被稱作OOB (out of band,帶外)。在頁為2K字節(jié)的NandFlash中(目前大 多數(shù)的NandFlash都是2Kbytes),00B的大小為64字節(jié),其中2字節(jié)用于記錄壞塊,24字節(jié)用于ECC校驗,剩余的38字節(jié)(64-2-24 = 38)未使用,本發(fā)明就是充分利用了 OOB中這 些未被使用的空間。參見圖2,本發(fā)明在OOB中增加了時間段標記,時間段標記可以是1或幾個字節(jié),用 于標記不同的時間段,只要滿足不同時間段的時間段標記不重復(fù)即可。當(dāng)系統(tǒng)時間發(fā)生調(diào) 整時,若調(diào)整后的系統(tǒng)時間早于調(diào)整前的系統(tǒng)時間,則新產(chǎn)生的日志會被記錄到相鄰的下 一個未使用頁中,該日志所在頁對應(yīng)的OOB使用一個新的時間段標記,該新的時間段標記 不同于任何一個已使用的時間段標記;若調(diào)整后的系統(tǒng)時間不早于調(diào)整前的系統(tǒng)時間,新 產(chǎn)生的日志可以繼續(xù)寫入原時間段標記對應(yīng)的頁中,也可以被記錄到相鄰的下一個未使用 頁中,并使用一個新的時間段標記。其中一個比較簡單的實現(xiàn)例子是當(dāng)系統(tǒng)時間發(fā)生調(diào)整且調(diào)整后的系統(tǒng)時間早 于調(diào)整前的系統(tǒng)時間,對新的時間段標記執(zhí)行在原時間段標記的基礎(chǔ)上+1操作。由于 NandFlash是循環(huán)覆蓋寫的存儲性質(zhì),因此被擦除的塊中的OOB對應(yīng)的時間段標記會被釋 放,時間段標記可以循環(huán)使用。對于時間段標記尺寸為1字節(jié)的情況,時間段標記可以取 0 255之間的任一個數(shù),即在被覆蓋寫之前,系統(tǒng)時間的調(diào)整次數(shù)不超過255次都不會出 現(xiàn)時間段標記的沖突問題,1字節(jié)的時間段標記支持255次系統(tǒng)時間的調(diào)整。 通過時間段標記將NandFlash中的日志按時間段進行劃分,每個時間段中的日志 都是按時間先后順序進行排列,為之后的搜索做好了準備工作,搜索時可以對每個時間段 進行查找;由于每個時間段中的日志按時間先后順序進行排列,因此對于一個時間段中的 日志可以采用折半查找算法,大大提高搜索效率。目前通常情況下,日志要湊夠IPage才可以寫入NandFlash,這是因為NandFlash 寫入的最小單位是IPage0以Page大小為2Kbytes、日志大小為128bytes為例,當(dāng)日志寫 夠16條時才能真正寫入NandFlash,不足16條時則將日志緩存在內(nèi)存中。但在特殊情況 下,比如幾分鐘都沒有新日志產(chǎn)生,而且內(nèi)存中緩存的日志還不足16條,若突然斷電會導(dǎo) 致日志丟失。因此,若內(nèi)存中緩存的日志不足一頁且距上一個日志產(chǎn)生到達預(yù)設(shè)時間(例 如IOs)還沒有新日志產(chǎn)生,則將內(nèi)存中緩存的日志接續(xù)寫入原時間段標記對應(yīng)的頁中,對 上例來說,即使日志不夠16條也會將緩存的日志強行寫入到NandFlash中。所述OOB還可以包括所對應(yīng)頁中日志的日志類型索引。日志通常是通過關(guān)鍵字 進行搜索的,本發(fā)明中的日志類型索引可以包括主類型字段和次類型字段,對于NandFlash 記錄的日志為多個設(shè)備共享的情況,還可以進一步包括設(shè)備標識ID字段。本實施例將日志 類型索引的關(guān)鍵字分為主類型、次類型和設(shè)備ID等三種。其中,主類型主要用于定義日志 所屬的大類,例如操作日志、異常日志、報警日志等;次類型用于定義日志所屬的小類,例如 異常日志又可以分成溫度異常、IP地址沖突、非法用戶登錄等;當(dāng)NandFlash記錄的日志為 多個設(shè)備共享時,可以用設(shè)備ID唯一確定一個設(shè)備。可以根據(jù)具體需要定義不同長度的主 類型字段、次類型字段和設(shè)備ID字段。通過將日志的類型單獨存儲在OOB中,當(dāng)搜索信息 包括日志類型時,可以對OOB中的日志類型索引進行匹配,而不用讀取日志內(nèi)容,能夠進一 步加快日志搜索的速度。例如,以NandFlash中的塊大小為128K字節(jié)、頁大小為2K字節(jié)、OOB大小為64字 節(jié)、每條日志大小128字節(jié)為例,1頁可以記錄16條日志,若需要支持8種主類型日志,每種 主類型支持32種次類型日志,整個日志系統(tǒng)支持256種設(shè)備ID,則需將主類型字段χ (對應(yīng)主類型數(shù)量)設(shè)置為3位,將次類型字段y (對應(yīng)次類型數(shù)量)設(shè)置為5位,將設(shè)備ID字段 ζ (對應(yīng)設(shè)備數(shù)量)設(shè)置為8位,每條日志類型索引為2bytes,即主類型字段(χ) +次類型字 段(y) +設(shè)備ID字段(z) = 16Bit;因此可以根據(jù)實際需要支持的主類型、次類型以及設(shè)備 ID的數(shù)量來確定所需的x、y、z位數(shù)。若時間段標記在OOB中占用1字節(jié),則OOB還可以有 38-1-2X16 = 5字節(jié)的空閑空間。系統(tǒng)在開機時,會根據(jù)各OOB中的時間段標記和與所述時間段標記對應(yīng)的第一個 和最后一個日志的建立時間,于內(nèi)存中建立時間段索引。其中,將所述第一個日志的建立時 間作為時間段的開始時間,將所述最后一個日志的建立時間作為時間段的結(jié)束時間。當(dāng)新的日志生成并寫入某個頁后,日志搜索系統(tǒng)還會更新內(nèi)存中的時間段索引。 若在原時間段標記對應(yīng)的頁中增加日志,則所述更新為使用新生成日志的建立時間更新 內(nèi)存中時間段的結(jié)束時間。若系統(tǒng)時間調(diào)整后生成的第一個日志,且調(diào)整后的系統(tǒng)時間早 于調(diào)整前的系統(tǒng)時間,由于該日志會被記錄到相鄰的下一個未使用頁中,并使用一個新的 時間段標記,則所述更新為為所述新的時間段標記建立時間段索引,所述時間段索引的時 間段開始時間和結(jié)束時間均為所述日志的建立時間。每個塊上的數(shù)據(jù)被擦除后,塊上所有頁的內(nèi)容會被標記為FF,表示未被使用。當(dāng)有 日志寫入到頁中,日志數(shù)據(jù)會替換掉FF,因此,通過查找FF標記可以定位上次記錄日志的 位置。對于OOB中包括日志類型索引的情況,未使用的頁對應(yīng)的OOB中,對應(yīng)日志類型索引 的位置內(nèi)容也為FF,表示該頁未使用。下面介紹本實施例的日志搜索方法。本實施例中,NandFlash的每個已使用頁對應(yīng)的OOB包括一個時間段標記;每個時 間段標記在整個NandFlash中是唯一的,每個時間段標記對應(yīng)連續(xù)的至少一個頁,且一個 時間段標記對應(yīng)的時間段內(nèi)日志按時間先后順序排列;系統(tǒng)內(nèi)存中具有時間段索引,所述 時間段索引包括時間段標記、以及與該時間段標記對應(yīng)的時間段的開始時間和結(jié)束時間。參照圖3,所述日志搜索方法包括如下步驟S10,接收搜索信息。日志搜索系統(tǒng)在接收到搜索信息后,執(zhí)行后續(xù)的搜索操作。所述搜索信息可以包 括所需查找日志的起始時間和終止時間,還可以進一步包括日志類型。S20,利用當(dāng)前時間段索引中時間段標記對應(yīng)的時間段的開始時間和結(jié)束時間,判 斷當(dāng)前時間段標記對應(yīng)的日志中是否包含符合所述搜索信息中的起始時間和終止時間的
日志ο日志搜索系統(tǒng)在收到包括起始時間和終止時間搜索信息后,可以從時間段標記最 小的時間段索引開始搜索,也可以從時間段標記最大的時間段索引開始搜索。判斷當(dāng)前時間段索引對應(yīng)的日志中是否包含符合搜索信息中的起始時間和終止 時間的日志有很多種方式。例如可以判斷當(dāng)前時間段索引中的開始時間和結(jié)束時間與搜索 信息中的起始時間和終止時間是否有交疊;或針對起始時間對當(dāng)前時間段中的日志進行折 半查找,確定一個起點,然后針對終止時間對當(dāng)前時間段中的日志進行折半查找,確定一個 終點,之后再判斷由這個起點和終點構(gòu)成的時間區(qū)間是否在搜索信息的起始時間和終止時 間范圍內(nèi)。S30,若是,則對當(dāng)前時間段標記對應(yīng)的日志進行折半查找,確定當(dāng)前時間段中符合所述起始時間和終止時間的日志,并將符合所述搜索信息的日志加入搜索結(jié)果;將相鄰 的下一條時間段索引作為當(dāng)前索引,重復(fù)執(zhí)行步驟S20。S40,若否,則將相鄰的下一條時間段索引作為當(dāng)前索引,重復(fù)執(zhí)行步驟S20。S50,當(dāng)符合搜索結(jié)束條件時,停止搜索,并將搜索結(jié)果中的日志返回;若不符合搜 索結(jié)束條件,則繼續(xù)上述的循環(huán)搜索。所述搜索結(jié)束條件可以為遍歷全部時間段索引,或搜索結(jié)果中的日志數(shù)量達到設(shè) 定數(shù)量,所述設(shè)定數(shù)量通??梢詾?000。所述OOB還可以包括所對應(yīng)頁中日志的日志類型索引(參見圖2),當(dāng)所述搜索信 息中還包括日志類型時,則在步驟S30確定符合起始時間和終止時間的日志后,還可以包 括步驟利用所述日志類型和符合所述起始時間和終止時間的日志在OOB中的日志類型索 弓I,篩選出符合所述日志類型的日志,之后再將符合搜索信息的日志加入搜索結(jié)果。由于內(nèi)存的讀取速度要快于NandFlash,在內(nèi)存充裕的情況下,還可以進一步在內(nèi) 存中建立全部日志的日志類型索引;內(nèi)存中的日志類型索引也是在日志搜索系統(tǒng)開機時, 內(nèi)存讀取OOB上的日志類型索引,完成日志搜索系統(tǒng)的初始化。以128bytes日志、2bytes 日志類型索引為例,日志和內(nèi)存中日志類型索引的對應(yīng)關(guān)系為日志偏移128 =內(nèi)存中日 志類型索引偏移2。當(dāng)所述搜索信息中還包括日志類型時,則在步驟S30確定符合起始時間和終止時 間的日志后,還可以包括步驟利用所述日志類型和符合所述起始時間和終止時間的日志 在內(nèi)存中的日志類型索引,篩選出符合所述日志類型的日志,之后再將符合搜索信息的日 志加入搜索結(jié)果。上述日志的搜索過程與日志的生成寫入過程是兩個互不干擾的過程,不存在執(zhí)行 順序上的限制。下面通過一個優(yōu)選的實施例詳細介紹本發(fā)明的方法。NandFlash的每個已使用頁對應(yīng)的OOB包括一個時間段標記和該頁中各個日志的 日志類型索引;每個時間段標記在整個NandFlash中是唯一的,每個時間段標記對應(yīng)連續(xù) 的至少一個頁,且一個時間段標記對應(yīng)的時間段內(nèi)日志按時間先后順序排列;系統(tǒng)內(nèi)存中 具有時間段索引和全部日志的日志類型索引,所述時間段索引包括時間段標記、以及與該 時間段標記對應(yīng)的時間段的開始時間和結(jié)束時間。所述日志搜索方法包括(參見圖4)S101,接收搜索信息。所述搜索信息包括起始時間和終止時間,以及日志類型。例如,起始時間為 2010-8-16:0:0,終止時間為 2010-8-310:0:0,日志類型為 0110011010101100。假設(shè)現(xiàn)在共 有15個時間段標記0 14,內(nèi)存中每個時間段索引的示意參見表1 :表 權(quán)利要求
一種日志搜索方法,其特征在于,NandFlash的每個已使用頁對應(yīng)的帶外OOB包括一個時間段標記;每個時間段標記在整個NandFlash中是唯一的,每個時間段標記對應(yīng)連續(xù)的至少一個頁,且一個時間段標記對應(yīng)的時間段內(nèi)日志按時間先后順序排列;系統(tǒng)內(nèi)存中具有時間段索引,所述時間段索引包括時間段標記、以及與該時間段標記對應(yīng)的時間段的開始時間和結(jié)束時間;在接收到搜索信息后,所述方法包括利用當(dāng)前時間段索引中時間段標記對應(yīng)的時間段的開始時間和結(jié)束時間,判斷當(dāng)前時間段標記對應(yīng)的日志中是否包含符合所述搜索信息中的起始時間和終止時間的日志;若是,則對當(dāng)前時間段標記對應(yīng)的日志進行折半查找,確定當(dāng)前時間段中符合所述起始時間和終止時間的日志,并將符合所述搜索信息的日志加入搜索結(jié)果;將相鄰的下一條時間段索引作為當(dāng)前索引,重復(fù)執(zhí)行所述判斷步驟;若否,則將相鄰的下一條時間段索引作為當(dāng)前索引,重復(fù)執(zhí)行所述判斷步驟;當(dāng)符合搜索結(jié)束條件時,停止搜索,并將搜索結(jié)果中的日志返回。
2.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括系統(tǒng)在開機時,根據(jù)各OOB中的時間段標記和與所述時間段標記對應(yīng)的第一個和最后 一個日志的建立時間,于內(nèi)存中建立時間段索引。
3.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括當(dāng)新的日志生成并寫入某 個頁后,更新內(nèi)存中的時間段索引。
4.如權(quán)利要求1所述的方法,其特征在于,所述搜索結(jié)束條件為遍歷全部時間段索引, 或搜索結(jié)果中的日志數(shù)量達到設(shè)定數(shù)量。
5.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括當(dāng)系統(tǒng)時間發(fā)生調(diào)整時, 若調(diào)整后的系統(tǒng)時間早于調(diào)整前的系統(tǒng)時間,新產(chǎn)生的日志被記錄到相鄰的下一個未使用 頁中,該日志所在頁對應(yīng)的OOB使用一個新的時間段標記。
6.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括當(dāng)內(nèi)存中緩存的日志不足 一頁且距上一個日志產(chǎn)生到達預(yù)設(shè)時間還沒有新日志產(chǎn)生,則將內(nèi)存中緩存的日志接續(xù)寫 入原時間段標記對應(yīng)的頁中。
7.如權(quán)利要求1-6任一項所述的方法,其特征在于,所述OOB還包括所對應(yīng)頁中日志的 日志類型索引。
8.如權(quán)利要求7所述的方法,其特征在于,當(dāng)所述搜索信息中還包括日志類型時,則在 所述確定符合起始時間和終止時間的日志后,所述方法還包括利用所述日志類型和符合 所述起始時間和終止時間的日志在OOB中的日志類型索引,篩選出符合所述日志類型的日ο
9.如權(quán)利要求7所述的方法,其特征在于,所述內(nèi)存中還具有全部日志的日志類型索 引;當(dāng)所述搜索信息中還包括日志類型時,則在所述確定符合起始時間和終止時間的日志 后,所述方法還包括利用所述日志類型和符合所述起始時間和終止時間的日志在內(nèi)存中 的日志類型索引,篩選出符合所述日志類型的日志。
10.如權(quán)利要求7所述的方法,其特征在于,所述日志類型索引包括主類型字段和次類 型字段。
11.如權(quán)利要求10所述的方法,其特征在于,所述日志類型索引還包括設(shè)備標識字段。
12.一種日志搜索系統(tǒng),其特征在于,NandFlash的每個已使用頁對應(yīng)的帶外OOB包括 一個時間段標記;每個時間段標記在整個NandFlash中是唯一的,每個時間段標記對應(yīng)連 續(xù)的至少一個頁,且一個時間段標記對應(yīng)的時間段內(nèi)日志按時間先后順序排列;所述系統(tǒng) 的內(nèi)存中具有時間段索引,所述時間段索引包括時間段標記、以及與該時間段標記對應(yīng)的 時間段的開始時間和結(jié)束時間;所述系統(tǒng)還包括接收模塊,用于接收搜索信息;判斷模塊,用于利用當(dāng)前時間段索引中時間段標記對應(yīng)的時間段的開始時間和結(jié)束時 間,判斷當(dāng)前時間段標記對應(yīng)的日志中是否包含符合所述搜索信息中的起始時間和終止時 間的日志;查找模塊,用于當(dāng)所述判斷模塊的判斷結(jié)果為是時,對當(dāng)前時間段標記對應(yīng)的日志進 行折半查找,確定當(dāng)前時間段中符合所述起始時間和終止時間的日志,并將符合所述搜索 信息的日志加入搜索結(jié)果;將相鄰的下一條時間段索引作為當(dāng)前索引,重復(fù)調(diào)用所述判斷 模塊進行判斷;當(dāng)所述判斷模塊的判斷結(jié)果為否時,將相鄰的下一條時間段索引作為當(dāng)前 索引,重復(fù)調(diào)用所述判斷模塊進行判斷;返回模塊,用于當(dāng)符合搜索結(jié)束條件時,停止搜索,并將搜索結(jié)果中的日志返回。
13.如權(quán)利要求12所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括時間段索引建立模塊,用 于在開機時,根據(jù)各OOB中的時間段標記和與所述時間段標記對應(yīng)的第一個和最后一個日 志的建立時間,于內(nèi)存中建立時間段索引。
14.如權(quán)利要求12所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括更新模塊,用于當(dāng)新的日 志生成并寫入某個頁后,更新內(nèi)存中的時間段索引。
15.如權(quán)利要求12所述的系統(tǒng),其特征在于,所述搜索結(jié)束條件為遍歷全部時間段索 弓I,或搜索結(jié)果中的日志數(shù)量達到設(shè)定數(shù)量。
16.如權(quán)利要求12-15任一項所述的系統(tǒng),其特征在于,所述OOB還包括所對應(yīng)頁中日 志的日志類型索引。
17.如權(quán)利要求16所述的系統(tǒng),其特征在于,當(dāng)所述搜索信息中還包括日志類型時,所 述查找模塊還用于在所述確定符合起始時間和終止時間的日志后,利用所述日志類型和 符合所述起始時間和終止時間的日志在OOB中的日志類型索引,篩選出符合所述日志類型 的日志。
18.如權(quán)利要求16所述的系統(tǒng),其特征在于,所述內(nèi)存中還具有全部日志的日志類型 索引;則當(dāng)所述搜索信息中還包括日志類型時,所述查找模塊還用于在所述確定符合起始時間和終止時間的日志后,利用所述日志類型和符合所述起始時 間和終止時間的日志在內(nèi)存中的日志類型索引,篩選出符合所述日志類型的日志。
全文摘要
本發(fā)明公開了一種日志搜索方法和系統(tǒng),其中,所述方法包括在接收到搜索信息后,利用當(dāng)前時間段索引中的開始時間和結(jié)束時間,判斷當(dāng)前時間段標記對應(yīng)的日志中是否包含符合搜索信息中的起始時間和終止時間的日志;若是,則對當(dāng)前時間段標記對應(yīng)的日志進行折半查找,確定當(dāng)前時間段中符合所述起始時間和終止時間的日志,并將符合搜索信息的日志加入搜索結(jié)果;將相鄰的下一條時間段索引作為當(dāng)前索引,重復(fù)執(zhí)行所述判斷步驟;若否,則將相鄰的下一條時間段索引作為當(dāng)前索引,重復(fù)執(zhí)行所述判斷步驟;當(dāng)符合搜索結(jié)束條件時,停止搜索,并將搜索結(jié)果中的日志返回。通過使用時間段標記對日志進行劃分,對每個時間段可以進行折半查找,提高搜索效率。
文檔編號G06F17/30GK101944115SQ20101028594
公開日2011年1月12日 申請日期2010年9月14日 優(yōu)先權(quán)日2010年9月14日
發(fā)明者徐新剛, 欒煥志, 胡揚忠, 趙先林, 鄔偉琪 申請人:杭州??低晹?shù)字技術(shù)股份有限公司