本申請(qǐng)涉及日志處理,具體涉及一種日志數(shù)據(jù)存儲(chǔ)方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、隨著電動(dòng)汽車(chē)技術(shù)的發(fā)展,汽車(chē)控制技術(shù)和車(chē)機(jī)功能日新月異,各應(yīng)用和系統(tǒng)新功能不斷增加,開(kāi)發(fā)調(diào)試以及關(guān)鍵數(shù)據(jù)需要記錄大量的日志文件。功能的多樣化復(fù)雜化導(dǎo)致的代碼量急速增加,功能調(diào)試,測(cè)試,驗(yàn)證,維護(hù)等,都需要大量且詳細(xì)的日志記錄文件。軟件開(kāi)發(fā)的各個(gè)環(huán)節(jié)都需要記錄大量的日志消息,實(shí)時(shí)日志量非常大,對(duì)于日志存儲(chǔ)空間的需求量很大,進(jìn)而需要對(duì)日志內(nèi)容做壓縮處理,普通現(xiàn)有的日志系統(tǒng)過(guò)于龐大,導(dǎo)致日志在實(shí)時(shí)收集和文件讀寫(xiě)時(shí)需要占用硬盤(pán)很高的讀寫(xiě)速度,在日志處理時(shí)也需要大量的邏輯運(yùn)算,在日志文件生成后對(duì)日志文件壓縮處理甚至?xí)纬蒫pu峰值,硬盤(pán)讀寫(xiě)速度再一次達(dá)到更高峰值,大量文件i/o操作,導(dǎo)致系統(tǒng)短時(shí)間卡頓風(fēng)險(xiǎn),壓縮時(shí)也會(huì)造成內(nèi)存占用居高不下的問(wèn)題,以至于導(dǎo)致現(xiàn)在的日志服務(wù)在系統(tǒng)中長(zhǎng)時(shí)間占用了大量的系統(tǒng)資源。
技術(shù)實(shí)現(xiàn)思路
1、為了解決如何在日志收集存儲(chǔ)過(guò)程中節(jié)省系統(tǒng)資源的技術(shù)問(wèn)題,本申請(qǐng)?zhí)峁┝艘环N日志數(shù)據(jù)存儲(chǔ)方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)。
2、第一方面,本申請(qǐng)?zhí)峁┝艘环N日志數(shù)據(jù)存儲(chǔ)方法,所述方法包括:
3、通過(guò)日志數(shù)據(jù)傳輸通道從日志客戶(hù)端獲取日志數(shù)據(jù);
4、將所述日志數(shù)據(jù)緩存到內(nèi)存的目標(biāo)地址,并將所述目標(biāo)地址對(duì)應(yīng)的目標(biāo)內(nèi)存指針加入到日志緩存鏈表;
5、根據(jù)所述日志緩存鏈表中存儲(chǔ)的所述目標(biāo)內(nèi)存指針的順序,依次對(duì)所述目標(biāo)內(nèi)存指針對(duì)應(yīng)的所述日志數(shù)據(jù)進(jìn)行壓縮算法處理,得到目標(biāo)壓縮文件;
6、保存所述目標(biāo)壓縮文件。
7、可選地,通過(guò)日志數(shù)據(jù)傳輸通道從日志客戶(hù)端獲取日志數(shù)據(jù),包括:
8、根據(jù)讀取的配置文件進(jìn)行初始化;其中,所述配置文件用于配置與所述日志客戶(hù)端的所述日志數(shù)據(jù)傳輸通道;
9、在所述日志數(shù)據(jù)傳輸通道正常的情況下,通過(guò)所述日志數(shù)據(jù)傳輸通道獲取所述日志數(shù)據(jù)。
10、可選地,在所述日志數(shù)據(jù)傳輸通道正常的情況下,通過(guò)所述日志數(shù)據(jù)傳輸通道獲取所述日志數(shù)據(jù),包括:
11、基于初始化建立的日志數(shù)據(jù)傳輸通道向所述日志客戶(hù)端發(fā)送日志服務(wù)通知;其中,所述日志服務(wù)通知攜帶日志服務(wù)端的標(biāo)志位;
12、獲取所述日志客戶(hù)端基于所述日志服務(wù)通知返回的響應(yīng)消息;
13、若所述響應(yīng)消息指示所述日志客戶(hù)端確定所述日志服務(wù)端的標(biāo)志位有效,則確定所述日志數(shù)據(jù)傳輸通道正常;
14、通過(guò)所述日志數(shù)據(jù)傳輸通道獲取所述日志客戶(hù)端發(fā)送的所述日志數(shù)據(jù)。
15、可選地,將所述日志數(shù)據(jù)緩存到內(nèi)存的目標(biāo)地址,并將所述目標(biāo)地址對(duì)應(yīng)的目標(biāo)內(nèi)存指針加入到日志緩存鏈表,包括:
16、根據(jù)接收的所述日志數(shù)據(jù)的時(shí)間先后順序申請(qǐng)用于緩存所述日志數(shù)據(jù)的目標(biāo)地址;
17、將所述日志數(shù)據(jù)緩存到所述目標(biāo)地址;
18、將所述目標(biāo)地址對(duì)應(yīng)的目標(biāo)內(nèi)存指針加入到日志緩存鏈表,并觸發(fā)通知消息;其中,所述通知消息用于通知日志處理任務(wù)處理所述日志數(shù)據(jù)。
19、可選地,將所述目標(biāo)地址對(duì)應(yīng)的目標(biāo)內(nèi)存指針加入到日志緩存鏈表之后,所述方法還包括:
20、判斷所述日志緩存鏈表是否達(dá)到預(yù)設(shè)的最大長(zhǎng)度;
21、若所述日志緩存鏈表達(dá)到所述最大長(zhǎng)度,則刪除所述日志緩存鏈表中存在時(shí)間最長(zhǎng)的節(jié)點(diǎn),并在隊(duì)尾添加一個(gè)新節(jié)點(diǎn);其中,所述新節(jié)點(diǎn)用于接收下一幀的日志數(shù)據(jù)。
22、可選地,根據(jù)所述日志緩存鏈表中存儲(chǔ)的所述目標(biāo)內(nèi)存指針的順序,依次對(duì)所述目標(biāo)內(nèi)存指針對(duì)應(yīng)的所述日志數(shù)據(jù)進(jìn)行壓縮算法處理,得到目標(biāo)壓縮文件,包括:
23、日志處理任務(wù)新建日志存儲(chǔ)文件;
24、根據(jù)所述日志緩存鏈表中存儲(chǔ)的所述目標(biāo)內(nèi)存指針的順序,讀取所述目標(biāo)內(nèi)存指針;
25、在所述目標(biāo)內(nèi)存指針對(duì)應(yīng)的所述日志數(shù)據(jù)有效的情況下,對(duì)所述日志數(shù)據(jù)進(jìn)行壓縮算法處理,得到處理后數(shù)據(jù);
26、將所述處理后數(shù)據(jù)寫(xiě)入所述日志存儲(chǔ)文件,得到所述目標(biāo)壓縮文件。
27、可選地,對(duì)所述日志數(shù)據(jù)進(jìn)行壓縮算法處理,得到處理后數(shù)據(jù),包括:
28、調(diào)用壓縮算法函數(shù)對(duì)所述日志數(shù)據(jù)進(jìn)行數(shù)據(jù)解析,得到目標(biāo)壓縮字典;
29、將所述目標(biāo)壓縮字典追加更新至所述日志存儲(chǔ)文件的當(dāng)前壓縮字典;
30、基于所述當(dāng)前壓縮字典壓縮所述日志數(shù)據(jù),得到所述處理后數(shù)據(jù)。
31、可選地,根據(jù)所述日志緩存鏈表中存儲(chǔ)的所述目標(biāo)內(nèi)存指針的順序,依次對(duì)所述目標(biāo)內(nèi)存指針對(duì)應(yīng)的所述日志數(shù)據(jù)進(jìn)行壓縮算法處理,得到目標(biāo)壓縮文件之后,所述方法還包括:
32、刪除所述目標(biāo)內(nèi)存指針對(duì)應(yīng)的所述日志數(shù)據(jù),以及刪除所述目標(biāo)內(nèi)存指針。
33、第二方面,本申請(qǐng)?zhí)峁┝艘环N日志數(shù)據(jù)存儲(chǔ)裝置,所述裝置包括:
34、獲取模塊,用于通過(guò)日志數(shù)據(jù)傳輸通道從日志客戶(hù)端獲取日志數(shù)據(jù);
35、緩存模塊,用于將所述日志數(shù)據(jù)緩存到內(nèi)存的目標(biāo)地址,并將所述目標(biāo)地址對(duì)應(yīng)的目標(biāo)內(nèi)存指針加入到日志緩存鏈表;
36、處理模塊,用于根據(jù)所述日志緩存鏈表中存儲(chǔ)的所述目標(biāo)內(nèi)存指針的順序,依次對(duì)所述目標(biāo)內(nèi)存指針對(duì)應(yīng)的所述日志數(shù)據(jù)進(jìn)行壓縮算法處理,得到目標(biāo)壓縮文件;
37、存儲(chǔ)模塊,用于保存所述目標(biāo)壓縮文件。
38、第三方面,本申請(qǐng)?zhí)峁┝艘环N電子設(shè)備,包括處理器、通信接口、存儲(chǔ)器和通信總線,其中,處理器,通信接口,存儲(chǔ)器通過(guò)通信總線完成相互間的通信;
39、存儲(chǔ)器,用于存放計(jì)算機(jī)程序;
40、處理器,用于執(zhí)行存儲(chǔ)器上所存放的程序時(shí),實(shí)現(xiàn)第一方面任一項(xiàng)實(shí)施例所述的日志數(shù)據(jù)存儲(chǔ)方法的步驟。
41、第四方面,本申請(qǐng)?zhí)峁┝艘环N計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如第一方面任一項(xiàng)實(shí)施例所述的日志數(shù)據(jù)存儲(chǔ)方法的步驟。
42、本申請(qǐng)的有益效果:
43、本申請(qǐng)實(shí)施例提供的該方法,通過(guò)日志數(shù)據(jù)傳輸通道從日志客戶(hù)端獲取日志數(shù)據(jù);將所述日志數(shù)據(jù)緩存到內(nèi)存的目標(biāo)地址,并將所述目標(biāo)地址對(duì)應(yīng)的目標(biāo)內(nèi)存指針加入到日志緩存鏈表;根據(jù)所述日志緩存鏈表中存儲(chǔ)的所述目標(biāo)內(nèi)存指針的順序,依次對(duì)所述目標(biāo)內(nèi)存指針對(duì)應(yīng)的所述日志數(shù)據(jù)進(jìn)行壓縮算法處理,得到目標(biāo)壓縮文件;保存所述目標(biāo)壓縮文件。該方法,可通過(guò)日志數(shù)據(jù)傳輸通道從日志客戶(hù)端獲取日志數(shù)據(jù),并緩存到內(nèi)存的目標(biāo)地址,將該目標(biāo)地址對(duì)應(yīng)的目標(biāo)內(nèi)存指針加入到日志緩存鏈表,在進(jìn)行日志處理時(shí),按照日志緩存鏈表中存儲(chǔ)目標(biāo)內(nèi)存指針的順序依次對(duì)日志數(shù)據(jù)進(jìn)行壓縮算法處理,無(wú)需多次對(duì)日志數(shù)據(jù)進(jìn)行讀寫(xiě),并且,將日志數(shù)據(jù)直接壓縮存儲(chǔ)到目標(biāo)壓縮文件,可有效降低多日志文件集體打包時(shí)帶來(lái)的高cpu消耗和頻繁文件讀寫(xiě)帶來(lái)的資源消耗,節(jié)省了日志收集存儲(chǔ)過(guò)程中的系統(tǒng)資源。
1.一種日志數(shù)據(jù)存儲(chǔ)方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,通過(guò)日志數(shù)據(jù)傳輸通道從日志客戶(hù)端獲取日志數(shù)據(jù),包括:
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,在所述日志數(shù)據(jù)傳輸通道正常的情況下,通過(guò)所述日志數(shù)據(jù)傳輸通道獲取所述日志數(shù)據(jù),包括:
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,將所述日志數(shù)據(jù)緩存到內(nèi)存的目標(biāo)地址,并將所述目標(biāo)地址對(duì)應(yīng)的目標(biāo)內(nèi)存指針加入到日志緩存鏈表,包括:
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,將所述目標(biāo)地址對(duì)應(yīng)的目標(biāo)內(nèi)存指針加入到日志緩存鏈表之后,所述方法還包括:
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,根據(jù)所述日志緩存鏈表中存儲(chǔ)的所述目標(biāo)內(nèi)存指針的順序,依次對(duì)所述目標(biāo)內(nèi)存指針對(duì)應(yīng)的所述日志數(shù)據(jù)進(jìn)行壓縮算法處理,得到目標(biāo)壓縮文件,包括:
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,對(duì)所述日志數(shù)據(jù)進(jìn)行壓縮算法處理,得到處理后數(shù)據(jù),包括:
8.根據(jù)權(quán)利要求1所述的方法,其特征在于,根據(jù)所述日志緩存鏈表中存儲(chǔ)的所述目標(biāo)內(nèi)存指針的順序,依次對(duì)所述目標(biāo)內(nèi)存指針對(duì)應(yīng)的所述日志數(shù)據(jù)進(jìn)行壓縮算法處理,得到目標(biāo)壓縮文件之后,所述方法還包括:
9.一種日志數(shù)據(jù)存儲(chǔ)裝置,其特征在于,所述裝置包括:
10.一種電子設(shè)備,其特征在于,包括處理器、通信接口、存儲(chǔ)器和通信總線,其中,處理器,通信接口,存儲(chǔ)器通過(guò)通信總線完成相互間的通信;
11.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)內(nèi)存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)權(quán)利要求1-8任一項(xiàng)所述的方法。