本發(fā)明涉及日志管理領(lǐng)域,特別是涉及一種日志管理方法、裝置、設(shè)備及存儲介質(zhì)。
背景技術(shù):
1、隨著芯片集成度越來越高,智能設(shè)備集成了越來越多的應(yīng)用程序,例如瀏覽器、游戲應(yīng)用、音樂應(yīng)用、視頻應(yīng)用、相機等,而每個應(yīng)用程序在運行時都會產(chǎn)生相應(yīng)的日志,因此,越來越多的應(yīng)用程序也對日志的管理提出了更高的要求。首先,多個應(yīng)用程序產(chǎn)生的日志通常是存儲在同一個隊列中的,但是每個應(yīng)用程序在往隊列中添加日志時,首先需要檢查隊列是否被其他應(yīng)用程序所占用,如果此時其他應(yīng)用程序也在往隊列中添加日志,就需要等待其他應(yīng)用添加完成后才能操作隊列,但這種行為會對日志實際存儲的時間造成滯后性問題,最終表現(xiàn)為日志產(chǎn)生時間和日志存儲時間的不一致。另外,隨著越來越多的應(yīng)用程序產(chǎn)生越來越多的日志,在存儲空間有限的情況下,如何盡可能多的保存日志也是目前有待解決的問題。
技術(shù)實現(xiàn)思路
1、本發(fā)明實施例的目的是提供一種日志管理方法、裝置、設(shè)備及存儲介質(zhì),能夠通過為各應(yīng)用程序分別配置環(huán)形隊列,提高日志存儲的實時性,并通過日志字典將日志中的相應(yīng)字段替換為相應(yīng)字符,從而實現(xiàn)對日志的壓縮存儲,以在有限的存儲空間中盡可能多地存儲日志,提高對存儲空間的利用率。其具體方案如下:
2、第一方面,本發(fā)明提供了一種日志管理方法,包括:
3、從各應(yīng)用程序分別對應(yīng)的環(huán)形隊列中讀取原始日志,并基于預(yù)設(shè)規(guī)則對所述原始日志進(jìn)行排序,以得到排序后日志;其中,不同的應(yīng)用程序?qū)?yīng)于不同的環(huán)形隊列,并且,每條日志均為基于若干字段組成的日志;
4、統(tǒng)計所述排序后日志中不同字段的出現(xiàn)次數(shù),并從出現(xiàn)次數(shù)大于預(yù)設(shè)次數(shù)的字段中確定出不存在于日志字典中的目標(biāo)字段,以及為所述目標(biāo)字段配置相應(yīng)的目標(biāo)字符,將所述目標(biāo)字段與所述目標(biāo)字符之間的對應(yīng)關(guān)系添加至所述日志字典中;其中,所述日志字典為存儲在預(yù)設(shè)日志存儲區(qū)域的起始位置上的字典,并且,不同的字段對應(yīng)于不同的字符;
5、從所述排序后日志中確定出位于所述日志字典中的待替換字段,并基于所述日志字典中存儲的字段與字符之間的對應(yīng)關(guān)系,將所述待替換字段替換為相應(yīng)的字符,以得到替換后日志,然后將所述替換后日志存儲至所述預(yù)設(shè)日志存儲區(qū)域中。
6、可選的,所述從各應(yīng)用程序分別對應(yīng)的環(huán)形隊列中讀取原始日志之前,還包括:
7、在任一應(yīng)用程序確定相應(yīng)的目標(biāo)環(huán)形隊列已滿或所述目標(biāo)環(huán)形隊列的空閑容量小于待寫入日志所需的容量時,獲取所述任一應(yīng)用程序發(fā)送的日志讀取指令,并基于所述日志讀取指令觸發(fā)所述從各應(yīng)用程序分別對應(yīng)的環(huán)形隊列中讀取原始日志的步驟,以便所述任一應(yīng)用程序在所述目標(biāo)環(huán)形隊列的空閑容量不小于所述待寫入日志所需的容量時,將所述待寫入日志寫入所述目標(biāo)環(huán)形隊列的隊尾。
8、可選的,所述從各應(yīng)用程序分別對應(yīng)的環(huán)形隊列中讀取原始日志,包括:
9、對各所述應(yīng)用程序分別對應(yīng)的環(huán)形隊列進(jìn)行遍歷,以將各所述應(yīng)用程序分別對應(yīng)的環(huán)形隊列中的第一個環(huán)形隊列確定為當(dāng)前環(huán)形隊列,并判斷所述當(dāng)前環(huán)形隊列是否為空隊列;
10、若所述當(dāng)前環(huán)形隊列不為空隊列,則從所述當(dāng)前環(huán)形隊列的隊頭讀取原始日志,并在原始日志讀取完成后,判斷所述當(dāng)前環(huán)形隊列是否為各所述應(yīng)用程序分別對應(yīng)的環(huán)形隊列中的最后一個環(huán)形隊列;
11、若所述當(dāng)前環(huán)形隊列為空隊列,則直接判斷所述當(dāng)前環(huán)形隊列是否為各所述應(yīng)用程序分別對應(yīng)的環(huán)形隊列中的最后一個環(huán)形隊列;
12、若所述當(dāng)前環(huán)形隊列不為各所述應(yīng)用程序分別對應(yīng)的環(huán)形隊列中的最后一個環(huán)形隊列,則將各所述應(yīng)用程序分別對應(yīng)的環(huán)形隊列中的下一個環(huán)形隊列確定為新的當(dāng)前環(huán)形隊列,并重新跳轉(zhuǎn)至所述判斷所述當(dāng)前環(huán)形隊列是否為空隊列的步驟;
13、若所述當(dāng)前環(huán)形隊列為各所述應(yīng)用程序分別對應(yīng)的環(huán)形隊列中的最后一個環(huán)形隊列,則結(jié)束對各所述應(yīng)用程序分別對應(yīng)的環(huán)形隊列的遍歷,以完成對各所述應(yīng)用程序分別對應(yīng)的環(huán)形隊列的原始日志讀取。
14、可選的,所述基于預(yù)設(shè)規(guī)則對所述原始日志進(jìn)行排序,以得到排序后日志,包括:
15、對各所述原始日志的頭信息分別進(jìn)行解析,以得到與各所述原始日志分別對應(yīng)的時間戳,并基于所述時間戳從前到后的順序?qū)Ω魉鲈既罩具M(jìn)行排序,以得到排序后日志。
16、可選的,所述基于預(yù)設(shè)規(guī)則對所述原始日志進(jìn)行排序,以得到排序后日志,包括:
17、對各所述原始日志的頭信息分別進(jìn)行解析,以得到與各所述原始日志分別對應(yīng)的日志等級,并基于所述日志等級從高到低的順序?qū)Ω魉鲈既罩具M(jìn)行排序,以得到排序后日志。
18、可選的,所述基于預(yù)設(shè)規(guī)則對所述原始日志進(jìn)行排序,以得到排序后日志之后,還包括:
19、在獲取到主機端發(fā)送的全量日志查看指令時,基于所述全量日志查看指令將所述排序后日志經(jīng)由通用異步收發(fā)器發(fā)送至所述主機端進(jìn)行可視化顯示,以便所述主機端利用各所述應(yīng)用程序分別對應(yīng)的應(yīng)用標(biāo)識并基于所述排序后日志確定各所述應(yīng)用程序分別對應(yīng)的日志容量,然后基于所述日志容量對各所述應(yīng)用程序分別對應(yīng)的環(huán)形隊列進(jìn)行容量大小的優(yōu)化。
20、可選的,所述將所述替換后日志存儲至所述預(yù)設(shè)日志存儲區(qū)域中,包括:
21、在所述預(yù)設(shè)日志存儲區(qū)域中不存在已存儲日志時,從所述預(yù)設(shè)日志存儲區(qū)域中確定與所述起始位置相鄰的第一目標(biāo)空閑區(qū)域,并將所述替換后日志存儲至所述第一目標(biāo)空閑區(qū)域中;其中,所述第一目標(biāo)空閑區(qū)域的容量不小于所述替換后日志所需的容量;
22、或,在所述預(yù)設(shè)日志存儲區(qū)域中存在所述已存儲日志時,從所述預(yù)設(shè)日志存儲區(qū)域中確定與所述已存儲日志相鄰的第二目標(biāo)空閑區(qū)域,并將所述替換后日志存儲至所述第二目標(biāo)空閑區(qū)域中;其中,所述第二目標(biāo)空閑區(qū)域的容量不小于所述替換后日志所需的容量。
23、第二方面,本發(fā)明提供了一種日志管理裝置,包括:
24、日志排序模塊,用于從各應(yīng)用程序分別對應(yīng)的環(huán)形隊列中讀取原始日志,并基于預(yù)設(shè)規(guī)則對所述原始日志進(jìn)行排序,以得到排序后日志;其中,不同的應(yīng)用程序?qū)?yīng)于不同的環(huán)形隊列,并且,每條日志均為基于若干字段組成的日志;
25、對應(yīng)關(guān)系添加模塊,用于統(tǒng)計所述排序后日志中不同字段的出現(xiàn)次數(shù),并從出現(xiàn)次數(shù)大于預(yù)設(shè)次數(shù)的字段中確定出不存在于日志字典中的目標(biāo)字段,以及為所述目標(biāo)字段配置相應(yīng)的目標(biāo)字符,將所述目標(biāo)字段與所述目標(biāo)字符之間的對應(yīng)關(guān)系添加至所述日志字典中;其中,所述日志字典為存儲在預(yù)設(shè)日志存儲區(qū)域的起始位置上的字典,并且,不同的字段對應(yīng)于不同的字符;
26、字段替換模塊,用于從所述排序后日志中確定出位于所述日志字典中的待替換字段,并基于所述日志字典中存儲的字段與字符之間的對應(yīng)關(guān)系,將所述待替換字段替換為相應(yīng)的字符,以得到替換后日志,然后將所述替換后日志存儲至所述預(yù)設(shè)日志存儲區(qū)域中。
27、第三方面,本發(fā)明提供了一種電子設(shè)備,包括:
28、存儲器,用于存儲計算機程序;
29、處理器,用于執(zhí)行所述計算機程序以實現(xiàn)前述日志管理方法的步驟。
30、第四方面,本發(fā)明提供了一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)前述日志管理方法的步驟。
31、本發(fā)明中,從各應(yīng)用程序分別對應(yīng)的環(huán)形隊列中讀取原始日志,并基于預(yù)設(shè)規(guī)則對所述原始日志進(jìn)行排序,以得到排序后日志;其中,不同的應(yīng)用程序?qū)?yīng)于不同的環(huán)形隊列,并且,每條日志均為基于若干字段組成的日志;統(tǒng)計所述排序后日志中不同字段的出現(xiàn)次數(shù),并從出現(xiàn)次數(shù)大于預(yù)設(shè)次數(shù)的字段中確定出不存在于日志字典中的目標(biāo)字段,以及為所述目標(biāo)字段配置相應(yīng)的目標(biāo)字符,將所述目標(biāo)字段與所述目標(biāo)字符之間的對應(yīng)關(guān)系添加至所述日志字典中;其中,所述日志字典為存儲在預(yù)設(shè)日志存儲區(qū)域的起始位置上的字典,并且,不同的字段對應(yīng)于不同的字符;從所述排序后日志中確定出位于所述日志字典中的待替換字段,并基于所述日志字典中存儲的字段與字符之間的對應(yīng)關(guān)系,將所述待替換字段替換為相應(yīng)的字符,以得到替換后日志,然后將所述替換后日志存儲至所述預(yù)設(shè)日志存儲區(qū)域中。
32、有益效果:本發(fā)明通過為各個應(yīng)用程序分別配置相應(yīng)的環(huán)形隊列,從而避免多個應(yīng)用程序共用一個環(huán)形隊列所帶來的日志產(chǎn)生時間和日志存儲時間不一致的問題,提高日志存儲的實時性。并且,本發(fā)明通過設(shè)置日志字典,以用于存儲字段與字符之間的對應(yīng)關(guān)系,從而基于對應(yīng)關(guān)系將日志中存在于日志字典中的待替換字段替換為相應(yīng)的字符,由于字符是數(shù)據(jù)結(jié)構(gòu)中最小的數(shù)據(jù)存取單位,并且字段是由若干字符組成的,也即字段所需的存儲容量是大于字符所需的存儲容量的;因此,通過日志字典將日志中的相應(yīng)字段替換為相應(yīng)字符,從而減少日志所需的存儲容量,實現(xiàn)對日志的壓縮存儲,以在有限的存儲空間中盡可能多地存儲日志,提高對存儲空間的利用率。