本發(fā)明涉及互聯(lián)網(wǎng)領(lǐng)域,具體而言,涉及一種日志處理方法和裝置。
背景技術(shù):
:NLog(一種日志工具)是一個(gè)基于.NET平臺(tái)(一種網(wǎng)絡(luò)服務(wù)平臺(tái))編寫的類庫,經(jīng)常被用作記錄應(yīng)用程序中完善的跟蹤調(diào)試信息,應(yīng)用程序每一秒都在被成千上萬人使用,跟蹤調(diào)試信息的數(shù)據(jù)量將會(huì)非常大?,F(xiàn)有的日志處理機(jī)制只能按照預(yù)定周期或預(yù)定條件上報(bào)日志,并將日志進(jìn)行存儲(chǔ)和傳輸,由于現(xiàn)有技術(shù)中需要對(duì)全部的日志做存儲(chǔ)和傳輸處理,當(dāng)NLog中的跟蹤調(diào)試信息的數(shù)據(jù)量異常巨大時(shí),將會(huì)造成處理資源的浪費(fèi)。針對(duì)現(xiàn)有的日志處理機(jī)制進(jìn)行數(shù)據(jù)傳輸和存儲(chǔ)時(shí)處理效率低,處理資源浪費(fèi)的技術(shù)問題,目前尚未提出有效的解決方案。技術(shù)實(shí)現(xiàn)要素:本發(fā)明實(shí)施例提供了一種日志處理方法和裝置,以至少解決現(xiàn)有的日志處理機(jī)制進(jìn)行數(shù)據(jù)傳輸和存儲(chǔ)時(shí)處理效率低,處理資源浪費(fèi)的技術(shù)問題。根據(jù)本發(fā)明實(shí)施例的一個(gè)方面,提供了一種日志處理方法,該日志處理方法包括:獲取采集到的日志;獲取上述日志的級(jí)別;將一個(gè)或多個(gè)級(jí)別的日志結(jié)構(gòu)化存儲(chǔ)在數(shù)據(jù)庫中。進(jìn)一步地,上述將一個(gè)或多個(gè)級(jí)別的日志結(jié)構(gòu)化存儲(chǔ)在數(shù)據(jù)庫中包括:從用于記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志中提取預(yù)設(shè)字段的屬性信息;將提取到的上述屬性信息存儲(chǔ)在數(shù)據(jù)庫的報(bào)表中,其中,上述報(bào)表中記錄有上述預(yù)設(shè)字段與上述屬性信息的對(duì)應(yīng)關(guān)系。進(jìn)一步地,在將提取到的上述屬性信息存儲(chǔ)在上述數(shù)據(jù)庫的報(bào)表中之后,上述方法還包括:通過關(guān)鍵字查詢存儲(chǔ)在上述數(shù)據(jù)庫的報(bào)表中的日志,得到查詢到的日志;根據(jù)上述預(yù)設(shè)字段中的標(biāo)識(shí)字段判斷上述查詢到的日志中是否存在未進(jìn)行糾錯(cuò)處理的日志;在判斷為是時(shí),遠(yuǎn)程調(diào)用糾錯(cuò)程序?qū)ι鲜鑫催M(jìn)行糾錯(cuò)處理的日志進(jìn)行糾錯(cuò)處理。進(jìn)一步地,在遠(yuǎn)程調(diào)用糾錯(cuò)程序?qū)ι鲜鑫催M(jìn)行糾錯(cuò)處理的日志進(jìn)行糾錯(cuò)處理之后,上述方法還包括:修改經(jīng)過上述糾錯(cuò)處理后的日志的標(biāo)識(shí)字段。根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種日志處理裝置,該日志處理裝置包括:第一獲取模塊,用于獲取采集到的日志;第二獲取模塊,用于獲取上述日志的級(jí)別;存儲(chǔ)模塊,用于將一個(gè)或多個(gè)級(jí)別的日志結(jié)構(gòu)化存儲(chǔ)在數(shù)據(jù)庫中。進(jìn)一步地,上述存儲(chǔ)模塊包括:提取子模塊,用于從用于記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志中提取預(yù)設(shè)字段的屬性信息;存儲(chǔ)子模塊,用于將提取到的上述屬性信息存儲(chǔ)在數(shù)據(jù)庫的報(bào)表中,其中,上述報(bào)表中記錄有上述預(yù)設(shè)字段與上述屬性信息的對(duì)應(yīng)關(guān)系。進(jìn)一步地,上述裝置還包括:查詢模塊,用于通過關(guān)鍵字查詢存儲(chǔ)在上述數(shù)據(jù)庫的報(bào)表中的日志,得到查詢到的日志;判斷模塊,用于根據(jù)上述預(yù)設(shè)字段中的標(biāo)識(shí)字段判斷上述查詢到的日志中是否存在未進(jìn)行糾錯(cuò)處理的日志;糾錯(cuò)模塊,用于在判斷模塊判斷為是時(shí),遠(yuǎn)程調(diào)用糾錯(cuò)程序?qū)ι鲜鑫催M(jìn)行糾錯(cuò)處理的日志進(jìn)行糾錯(cuò)處理。進(jìn)一步地,上述裝置還包括:字段修改模塊,用于在糾錯(cuò)模塊遠(yuǎn)程調(diào)用糾錯(cuò)程序?qū)ι鲜鑫催M(jìn)行糾錯(cuò)處理的日志進(jìn)行糾錯(cuò)處理之后,修改經(jīng)過上述糾錯(cuò)處理后的日志的標(biāo)識(shí)字段。在本發(fā)明實(shí)施例中,通過獲取采集到的日志及其日志級(jí)別,并將一個(gè)或多個(gè)級(jí)別的日志結(jié)構(gòu)化存儲(chǔ)在數(shù)據(jù)庫中,解決了現(xiàn)有的日志處理機(jī)制處理效率較低的技術(shù)問題。此外,根據(jù)日志級(jí)別字段存儲(chǔ)符合要求的日志,避免了對(duì)無需處理的日志進(jìn)行處理,并采用數(shù)據(jù)庫進(jìn)行存儲(chǔ)的方式,減少了數(shù)據(jù)存儲(chǔ)量,解決了現(xiàn)有技術(shù)中處理資源浪費(fèi)的技術(shù)問題,實(shí)現(xiàn)了對(duì)日志的高效處理。附圖說明此處所說明的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:圖1是根據(jù)本發(fā)明實(shí)施例的一種日志處理方法的流程圖;圖2是根據(jù)本發(fā)明實(shí)施例的一種可選的日志處理方法的流程圖;圖3是根據(jù)本發(fā)明實(shí)施例的一種用于實(shí)施日志處理方法的裝置的示意圖。具體實(shí)施方式為了使本
技術(shù)領(lǐng)域:
的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。根據(jù)本發(fā)明實(shí)施例,提供了一種日志處理方法的方法實(shí)施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。實(shí)施例1圖1是根據(jù)本發(fā)明實(shí)施例的一種日志處理方法的流程圖,如圖1所示,該方法可以包括如下步驟:步驟S102,獲取采集到的日志;步驟S104,獲取日志的級(jí)別;步驟S106,將一個(gè)或多個(gè)級(jí)別的日志結(jié)構(gòu)化存儲(chǔ)在數(shù)據(jù)庫中。在本發(fā)明實(shí)施例中,通過獲取采集到的日志及其日志級(jí)別,并將一個(gè)或多個(gè)級(jí)別的日志結(jié)構(gòu)化存儲(chǔ)在數(shù)據(jù)庫中,解決了現(xiàn)有的日志處理機(jī)制處理效率較低的技術(shù)問題。此外,根據(jù)日志級(jí)別字段存儲(chǔ)符合要求的日志,避免了對(duì)無需處理的日志進(jìn)行處理,并采用數(shù)據(jù)庫進(jìn)行存儲(chǔ)的方式,減少了數(shù)據(jù)存儲(chǔ)量,解決了現(xiàn)有技術(shù)中處理資源浪費(fèi)的技術(shù)問題,實(shí)現(xiàn)了對(duì)日志的高效處理。其中,可以獲取各個(gè)終端上的處理程序的日志,以獲取采集的日志,在獲取采集的日志之后,根據(jù)日志中的日志級(jí)別字段獲取各個(gè)日志的級(jí)別,將符合要求的一個(gè)或 多個(gè)級(jí)別的日志進(jìn)行存儲(chǔ)??蛇x地,將一個(gè)或多個(gè)級(jí)別的日志進(jìn)行存儲(chǔ)包括:將用于記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志結(jié)構(gòu)化存儲(chǔ)在數(shù)據(jù)庫中,其中,在將用于記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志存儲(chǔ)至數(shù)據(jù)庫之前,可以對(duì)用于記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志中的日志數(shù)據(jù)進(jìn)行預(yù)處理,例如,該預(yù)處理的方式為:將該日志數(shù)據(jù)進(jìn)行切分,得到切分后的日志數(shù)據(jù)。通過上述實(shí)施例,將用于記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志結(jié)構(gòu)化存儲(chǔ)在數(shù)據(jù)庫中,減少了數(shù)據(jù)傳輸量和存儲(chǔ)量??蛇x地,在獲取采集的日志之后,根據(jù)日志中的日志級(jí)別字段獲取各個(gè)日志的級(jí)別,將記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志結(jié)構(gòu)化存儲(chǔ)在數(shù)據(jù)庫中。具體地,NLog是用于記錄應(yīng)用程序中完善的跟蹤調(diào)試信息的一種日志工具,其中,訪問的每條跟蹤信息都包含一個(gè)日志級(jí)別(loglevel)信息,“info(信息類型的信息)”、“debug(一般用于調(diào)試程序的記錄信息)”、“error(錯(cuò)誤信息)”、“fatal(致命異常信息)”等分別用來描述該條信息的重要性。可選地,上述的記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志可以為去除掉“info”、“dubug”信息,包含“error”和/或“fatal”信息的日志。具體地,“info(信息類型的信息)”、“debug(一般用于調(diào)試程序的記錄信息)”、“error(錯(cuò)誤信息)”、“fatal(致命異常信息)”等為四個(gè)級(jí)別的日志級(jí)別信息,這四個(gè)級(jí)別的日志級(jí)別信息分別用來描述信息的重要性。在本發(fā)明的上述實(shí)施例中,在將用于記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志結(jié)構(gòu)化存儲(chǔ)在數(shù)據(jù)庫中之后,該日志處理方法還包括:通過郵件發(fā)送記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志。具體地,可以將結(jié)構(gòu)化存儲(chǔ)在數(shù)據(jù)庫中的所有日志匯總成一個(gè)文件后,通過郵件發(fā)送給指定的接收人。通過上述實(shí)施例,在結(jié)構(gòu)化存儲(chǔ)用于記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志之后,將所有結(jié)構(gòu)化存儲(chǔ)用于記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志匯總成一個(gè)文件后,可以通過發(fā)送模塊以郵件方式直接發(fā)送給指定的接收人,接收人可以直接看到包含原始出錯(cuò)信息的日志,以便于接收人直接對(duì)日志進(jìn)行糾錯(cuò)處理。其中,指定的接收人可以為與郵件發(fā)送的記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志對(duì)應(yīng)的服務(wù)器的所屬人,在此不做具體地限定。具體地,在結(jié)構(gòu)化存儲(chǔ)用于記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志之后,將所有結(jié)構(gòu)化存儲(chǔ)的日志匯總成一個(gè)文件后,可以通過郵件方式發(fā)送記錄程序運(yùn)行出錯(cuò) 的一個(gè)或多個(gè)級(jí)別的日志,記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志可以為包含“error”和/或“fatal”信息的日志。其中,通過郵件方式發(fā)送的信息可以包括:服務(wù)器獲取日志的時(shí)間、日志中記錄程序運(yùn)行出錯(cuò)的詳細(xì)信息以及預(yù)處理之后的信息,預(yù)處理之后的信息可以包含每個(gè)日志對(duì)應(yīng)的服務(wù)器地址或計(jì)算機(jī)名。在本發(fā)明的上述實(shí)施例中,將一個(gè)或多個(gè)級(jí)別的日志結(jié)構(gòu)化存儲(chǔ)在數(shù)據(jù)庫中包括:從用于記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志中提取預(yù)設(shè)字段的屬性信息;將提取到的屬性信息存儲(chǔ)在數(shù)據(jù)庫的報(bào)表中,其中,報(bào)表中記錄有預(yù)設(shè)字段與屬性信息的對(duì)應(yīng)關(guān)系。可選地,在將提取到的屬性信息存儲(chǔ)在數(shù)據(jù)庫的報(bào)表中之后,該日志處理方法還包括:通過關(guān)鍵字查詢存儲(chǔ)在數(shù)據(jù)庫的報(bào)表中的日志,得到查詢到的日志;根據(jù)預(yù)設(shè)字段中的標(biāo)識(shí)字段判斷查詢到的日志中是否存在未進(jìn)行糾錯(cuò)處理的日志;在判斷為是時(shí),遠(yuǎn)程調(diào)用糾錯(cuò)程序?qū)ξ催M(jìn)行糾錯(cuò)處理的日志進(jìn)行糾錯(cuò)處理。可選地,如表1所示,表1中包含不同類型的預(yù)設(shè)字段和屬性信息,每個(gè)預(yù)設(shè)字段均代表不同的含義。例如,數(shù)據(jù)庫的報(bào)表中的預(yù)設(shè)字段可以包括ServerName、IP、Des、LogError、Time以及Flag等字段,其中,ServerName和IP為分布式程序的計(jì)算機(jī)標(biāo)識(shí)信息,Des、LogError、Time等字段可以利用正則表達(dá)式從日志中解析出來,存儲(chǔ)在數(shù)據(jù)庫的報(bào)表中,F(xiàn)lag字段為枚舉值,“1”表示日志已經(jīng)被處理過,不再重復(fù)處理,“0”表示日志沒有被處理。具體地,ServerName表示接口名字段、IP表示地址字段、Time表示時(shí)間字段、LogError表示記錄錯(cuò)誤字段、Des表示加密字段以及Flag表示枚舉字段。本實(shí)施例中的表1及其表中關(guān)鍵字目錄僅為示例性說明,依據(jù)對(duì)日志的實(shí)際處理需要,關(guān)鍵字的類別和數(shù)目是可變的。表1keyServerNameIPTimeLogErrorDesFlag11db1369.9.9.90x00000000000007DAfatalTimeoutExc0具體地,在結(jié)構(gòu)化存儲(chǔ)一個(gè)或多個(gè)級(jí)別的日志后,一個(gè)或多個(gè)級(jí)別的日志用于記錄程序運(yùn)行出錯(cuò)的error和fatal信息,在對(duì)記錄程序運(yùn)行出錯(cuò)的error和fatal信息進(jìn)行存儲(chǔ)時(shí),通過對(duì)結(jié)構(gòu)化存儲(chǔ)的日志提取屬性信息,將提取到的屬性信息存儲(chǔ)到數(shù)據(jù)庫的報(bào)表中。在將提取到的屬性信息存儲(chǔ)到數(shù)據(jù)庫的報(bào)表中之后,可以按照不同分類,不同維度,根據(jù)關(guān)鍵字查詢存儲(chǔ)在數(shù)據(jù)庫的報(bào)表中的相應(yīng)日志,并根據(jù)詳細(xì)的錯(cuò)誤信息定位出錯(cuò)的原因,最終通過遠(yuǎn)程調(diào)用相應(yīng)的糾錯(cuò)程序?qū)υ撓鄳?yīng)日志中未處理 的日志進(jìn)行糾錯(cuò)處理。可選地,在遠(yuǎn)程調(diào)用糾錯(cuò)程序?qū)ξ催M(jìn)行糾錯(cuò)處理的日志進(jìn)行糾錯(cuò)處理之后,修改經(jīng)過糾錯(cuò)處理后的日志的標(biāo)識(shí)字段。其中,若標(biāo)識(shí)字段為Flag字段,修改標(biāo)識(shí)字段的方式可以為變更該日志的Flag字段的屬性值。通過上述實(shí)施例,可以減小存儲(chǔ)的日志的數(shù)據(jù)量。在本發(fā)明的實(shí)施例中,預(yù)設(shè)字段包含F(xiàn)lag字段,F(xiàn)lag字段用于標(biāo)記一個(gè)或多個(gè)級(jí)別的日志是否經(jīng)過糾錯(cuò)處理。通過上述實(shí)施例,將結(jié)構(gòu)化存儲(chǔ)在數(shù)據(jù)庫中的日志按照預(yù)設(shè)字段提取屬性信息,并將提取到的屬性信息進(jìn)行存儲(chǔ),該屬性信息中包含F(xiàn)lag字段,F(xiàn)lag字段用于標(biāo)記該屬性信息對(duì)應(yīng)的日志是否經(jīng)過糾錯(cuò)處理,避免了對(duì)一些已經(jīng)處理過的日志信息進(jìn)行再處理的情況發(fā)生,從而提高了處理性能和處理效率。其中,F(xiàn)lag字段為枚舉值,其屬性值可以為“0”和“1”,若Flag標(biāo)識(shí)字段的屬性值為“1”時(shí),則表示日志信息已經(jīng)被處理,不再重復(fù)處理;若Flag標(biāo)識(shí)字段的屬性值為“0”時(shí),則表示日志信息沒有被處理。通過上述實(shí)施例,通過訪問各個(gè)終端(如個(gè)人計(jì)算機(jī)、服務(wù)器),獲取各個(gè)終端上的處理程序的日志,即獲取采集的日志,在獲取采集的日志之后,根據(jù)日志中的日志級(jí)別字段獲取各個(gè)日志的級(jí)別,將獲取到的一個(gè)或多個(gè)級(jí)別的日志結(jié)構(gòu)化存儲(chǔ)在數(shù)據(jù)庫中,并對(duì)結(jié)構(gòu)化存儲(chǔ)在數(shù)據(jù)庫中的日志進(jìn)行屬性信息的提取,將提取到的屬性信息存儲(chǔ)在數(shù)據(jù)庫的報(bào)表中,進(jìn)而可以根據(jù)錯(cuò)誤信息的關(guān)鍵字查詢存儲(chǔ)在數(shù)據(jù)庫的報(bào)表中的屬性信息對(duì)應(yīng)的日志,進(jìn)而可以通過Flag字段判斷該屬性信息對(duì)應(yīng)的日志是否經(jīng)過糾錯(cuò)處理。下面結(jié)合圖2對(duì)本發(fā)明實(shí)施例進(jìn)行詳細(xì)說明,如圖2所示,該日志處理方法包括如下步驟:步驟S201,獲取采集到的日志。具體地,可以通過訪問各個(gè)終端,獲取各個(gè)終端上的處理程序的日志,即為獲取采集到的日志。其中,各個(gè)終端可以為各個(gè)數(shù)據(jù)采集分布點(diǎn)(如服務(wù)器)。步驟S203,獲取采集到的日志的級(jí)別。具體地,在獲取采集到的日志后,根據(jù)日志級(jí)別(loglevel)字段,去除掉“info”、“dubug”信息,獲取包含“error”、“fatal”信息的日志,即為“error”和/或“fatal” 級(jí)別的日志。其中,“error”為錯(cuò)誤信息,“fatal”為致命異常信息,用來描述信息的重要性。步驟S205,結(jié)構(gòu)化存儲(chǔ)“error”和/或“fatal”級(jí)別的日志。具體地,在獲取包含“error”、“fatal”信息的日志之后,結(jié)構(gòu)化存儲(chǔ)獲取到的日志,這些日志可以為包含“error”和/或“fatal”信息的一個(gè)或者多個(gè)級(jí)別的日志。步驟S207,將結(jié)構(gòu)化存儲(chǔ)的日志預(yù)處理后,以郵件方式發(fā)送給指定接收人。具體地,在結(jié)構(gòu)化存儲(chǔ)一個(gè)或多個(gè)級(jí)別的日志之后,將所有結(jié)構(gòu)化存儲(chǔ)的日志匯總成一個(gè)文件后,提取結(jié)構(gòu)化存儲(chǔ)的日志中所包含的服務(wù)器地址或者計(jì)算機(jī)信息,獲取服務(wù)器地址或計(jì)算機(jī)信息對(duì)應(yīng)的郵箱地址,將上述獲取的服務(wù)器地址或計(jì)算機(jī)信息以及日志發(fā)送至郵箱地址(即上述的指定接收人),在此,指定接收人不做限定。步驟S209,在結(jié)構(gòu)化存儲(chǔ)的日志中提取預(yù)設(shè)字段的屬性信息,并將提取到的屬性信息存儲(chǔ)在數(shù)據(jù)庫的報(bào)表中。具體地,通過結(jié)構(gòu)化存儲(chǔ)的日志中提取預(yù)設(shè)字段的屬性信息,并將提取到的屬性信息存儲(chǔ)在數(shù)據(jù)庫的報(bào)表中,且數(shù)據(jù)庫的報(bào)表中包含不同預(yù)設(shè)字段,每個(gè)預(yù)設(shè)字段代表不同的含義,通過這些不同預(yù)設(shè)字段對(duì)應(yīng)的屬性信息,方便對(duì)存儲(chǔ)的日志進(jìn)行信息處理。步驟S211,根據(jù)關(guān)鍵字信息在數(shù)據(jù)庫的報(bào)表中進(jìn)行查詢,得到查詢到的日志。其中,關(guān)鍵字信息可以包括描述錯(cuò)誤信息的關(guān)鍵字,也可以包括描述其他必要信息的關(guān)鍵字,關(guān)鍵字的類別和數(shù)目可以依據(jù)對(duì)日志的實(shí)際處理需要人為進(jìn)行設(shè)置。具體地,在數(shù)據(jù)庫的報(bào)表中,根據(jù)錯(cuò)誤信息的關(guān)鍵字進(jìn)行查詢,查詢得到相應(yīng)的日志信息,對(duì)應(yīng)得到該日志所屬的計(jì)算機(jī)名、程序名以及數(shù)據(jù)庫名稱。例如,查詢關(guān)鍵字“無中斷入口程序”,則獲得包含“無中斷入口程序”錯(cuò)誤信息的所有日志。步驟S213,根據(jù)預(yù)設(shè)字段中的標(biāo)識(shí)字段判斷查詢到的日志中是否存在未進(jìn)行糾錯(cuò)處理的日志。具體地,可以逐條獲取查詢到的待處理的日志,并判斷待處理的日志中標(biāo)識(shí)字段是否表示該日志是否已經(jīng)被處理過。其中,待處理的日志可以按照查詢到的日志列表順序依次獲取、也可以按照查詢到的日志的序號(hào)按照預(yù)設(shè)規(guī)則獲取,該預(yù)設(shè)規(guī)則的設(shè)置可基于優(yōu)先級(jí)等因素,在此不做限制??蛇x地,通過標(biāo)志字段Flag字段的屬性值來判斷待處理的日志是否經(jīng)過糾錯(cuò)處理,其中,F(xiàn)lag字段的屬性值可以為“0”和“1”,其中,若Flag的屬性值為“1”,則表示該待處理的日志已經(jīng)被糾錯(cuò)處理過,不再重復(fù)處理,執(zhí)行步驟S219輸出處理結(jié)果;若Flag的屬性值為“0”,則表示該待處理的日志沒有被糾錯(cuò)處理,則執(zhí)行步驟S215。例如,查詢關(guān)鍵字“無中斷入口程序”,則會(huì)得到包含“無中斷入口程序”錯(cuò)誤信息的所有日志(如,有10個(gè)日志),利用key值獲取與key值對(duì)應(yīng)的日志的標(biāo)識(shí)字段Flag的屬性值,若標(biāo)志字段Flag的屬性值為“1”,則表示該對(duì)應(yīng)的日志已經(jīng)處理過,不再重復(fù)處理,輸出處理結(jié)果;若標(biāo)志字段Flag的屬性值為“0”,則表示對(duì)應(yīng)的日志沒有被處理,則執(zhí)行步驟S215。步驟S215,根據(jù)關(guān)鍵字信息,遠(yuǎn)程調(diào)用糾錯(cuò)程序?qū)ξ催M(jìn)行糾錯(cuò)處理的日志進(jìn)行糾錯(cuò)處理。具體地,通過錯(cuò)誤信息的關(guān)鍵字進(jìn)行查詢,在查詢到日志并確定該查詢到的待處理日志尚未被處理過的情況下,根據(jù)日志中詳細(xì)的錯(cuò)誤信息進(jìn)行定位,定位得到出錯(cuò)的原因,并通過遠(yuǎn)程調(diào)用糾錯(cuò)程序?qū)υ撓鄳?yīng)的未處理的日志進(jìn)行糾錯(cuò)處理。步驟S217,變更該日志的flag字段的屬性值。其中,可以將該日志的flag字段的屬性值變更為“1”。步驟S219,輸出處理結(jié)果??蛇x地,在根據(jù)標(biāo)識(shí)字段判斷查詢到的日志中是否有未進(jìn)行糾錯(cuò)處理的日志之后,若查詢到的日志中是否有未進(jìn)行糾錯(cuò)處理的日志之后,方法還包括:判斷是否還有未使用的關(guān)鍵字信息,若不存在未使用的關(guān)鍵字信息,則判斷出完成糾錯(cuò)處理,則輸出所有的處理結(jié)果,若存在未使用的關(guān)鍵字信息,則判斷出未完成糾錯(cuò)處理,則使用該未使用的關(guān)鍵字信息進(jìn)行日志查詢,并對(duì)查詢到的未處理的日志按照上述流程進(jìn)行糾錯(cuò)處理。其中,上述的未使用的關(guān)鍵字信息表示為通過該關(guān)鍵字信息進(jìn)行日志查詢。具體地,在通過遠(yuǎn)程調(diào)用糾錯(cuò)程序?qū)Σ樵兊降奈刺幚淼娜罩局械哪骋粭l日志進(jìn)行糾錯(cuò)處理之后,若該條日志成功完成糾錯(cuò)處理,則將查詢到的未處理的日志中除過該條日志之外的其余日志作為待處理的日志;若該條日志未成功完成糾錯(cuò)處理,則該條日志仍為待處理的日志。在對(duì)某條日志進(jìn)行一次糾錯(cuò)處理之后,可以利用key值獲取下一條日志(下一條日志為從待處理的日志中選取的、處理次序在本次糾錯(cuò)處理次序之后且處理次序相鄰的日志)的標(biāo)識(shí)字段,進(jìn)而通過步驟S213至步驟S217對(duì)該下一 條日志進(jìn)行判斷和處理。類似地,若存在多個(gè)關(guān)鍵字信息時(shí),則通過步驟S211至步驟S217完成對(duì)各個(gè)關(guān)鍵字的查詢以及對(duì)各個(gè)關(guān)鍵字對(duì)應(yīng)的未處理的日志所進(jìn)行的判斷和處理。其中,key值為標(biāo)識(shí)參數(shù),key值代表包含經(jīng)過屬性信息提取等處理后存儲(chǔ)的數(shù)據(jù)信息的某個(gè)日志,根據(jù)key值的不同,所代表的日志不同。通過上述實(shí)施例,通過訪問各個(gè)終端(如個(gè)人計(jì)算機(jī)、服務(wù)器),獲取各個(gè)終端的處理程序的日志,并根據(jù)日志級(jí)別(loglevel)字段,去除掉“info”、“dubug”信息,只將文件中包含“error”、“fatal”信息的日志結(jié)構(gòu)化存儲(chǔ)在數(shù)據(jù)庫中,其次,通過對(duì)結(jié)構(gòu)化存儲(chǔ)的日志按照預(yù)設(shè)字段進(jìn)行屬性信息的提取,并將提取到的屬性信息存儲(chǔ)到數(shù)據(jù)庫的報(bào)表中,進(jìn)而可以根據(jù)錯(cuò)誤信息的關(guān)鍵字,查詢存儲(chǔ)在數(shù)據(jù)庫的報(bào)表中的相應(yīng)的日志,并通過Flag標(biāo)識(shí)字段判斷該相應(yīng)的日志是否經(jīng)過了糾錯(cuò)處理。在本發(fā)明實(shí)施例中,通過獲取采集到的日志及其日志級(jí)別,并將一個(gè)或多個(gè)級(jí)別的日志結(jié)構(gòu)化存儲(chǔ)在數(shù)據(jù)庫中,解決了現(xiàn)有的日志處理機(jī)制處理效率較低的技術(shù)問題。此外,根據(jù)日志級(jí)別字段存儲(chǔ)符合要求的日志,避免了對(duì)無需處理的日志進(jìn)行處理,并采用數(shù)據(jù)庫進(jìn)行存儲(chǔ)的方式,減少了數(shù)據(jù)存儲(chǔ)量,解決了現(xiàn)有技術(shù)中處理資源浪費(fèi)的技術(shù)問題,實(shí)現(xiàn)了對(duì)日志的高效處理。實(shí)施例2根據(jù)本申請(qǐng)實(shí)施例,還提供了一種用于實(shí)施上述日志處理方法的裝置,如圖3所示,該裝置可以包括:第一獲取模塊20、第二獲取模塊40以及存儲(chǔ)模塊60。其中,第一獲取模塊20,用于獲取采集到的日志。第二獲取模塊40,用于獲取日志的級(jí)別。存儲(chǔ)模塊60,用于將一個(gè)或多個(gè)級(jí)別的日志結(jié)構(gòu)化存儲(chǔ)在數(shù)據(jù)庫中。在本發(fā)明實(shí)施例中,通過第一獲取模塊20獲取采集到的日志,以及通過第二獲取模塊40獲取日志級(jí)別,并通過存儲(chǔ)模塊60將一個(gè)或多個(gè)級(jí)別的日志結(jié)構(gòu)化存儲(chǔ)在數(shù)據(jù)庫中,解決了現(xiàn)有的日志處理機(jī)制處理效率較低的技術(shù)問題。此外,根據(jù)日志級(jí)別字段存儲(chǔ)符合要求的日志,避免了對(duì)無需處理的日志進(jìn)行處理,并采用數(shù)據(jù)庫進(jìn)行存儲(chǔ)的方式,減少了數(shù)據(jù)存儲(chǔ)量,解決了現(xiàn)有技術(shù)中處理資源浪費(fèi)的技術(shù)問題,實(shí)現(xiàn)了對(duì)日志的高效處理。其中,可以通過第一獲取模塊20獲取各個(gè)終端上的處理程序的日志,以獲取采集的日志,在獲取采集的日志之后,根據(jù)日志中的日志級(jí)別字段通過第二獲取模塊40獲取各個(gè)日志的級(jí)別,將符合要求的一個(gè)或多個(gè)級(jí)別的日志通過處理模塊結(jié)構(gòu)化存儲(chǔ) 在數(shù)據(jù)庫中。在本發(fā)明的上述實(shí)施例中,存儲(chǔ)模塊60可用于將用于記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志結(jié)構(gòu)化存儲(chǔ)在數(shù)據(jù)庫中,其中,在存儲(chǔ)模塊60將用于記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志存儲(chǔ)至數(shù)據(jù)庫之前,可以對(duì)用于記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志中的日志數(shù)據(jù)進(jìn)行預(yù)處理,例如,該預(yù)處理的方式為:將該日志數(shù)據(jù)進(jìn)行切分,得到切分后的日志數(shù)據(jù)。通過上述實(shí)施例,可以通過存儲(chǔ)模塊60結(jié)構(gòu)化存儲(chǔ)用于記錄程序運(yùn)行出錯(cuò)的日志,減少了數(shù)據(jù)傳輸量和存儲(chǔ)量。具體地,在通過第一獲取模塊20獲取采集的日志之后,根據(jù)日志中的日志級(jí)別字段,通過第二獲取模塊40獲取各個(gè)日志的級(jí)別,之后,通過存儲(chǔ)模塊對(duì)記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志進(jìn)行結(jié)構(gòu)化存儲(chǔ)。具體地,NLog是用于記錄應(yīng)用程序中完善的跟蹤調(diào)試信息的一種日志工具,其中,訪問的每條跟蹤信息都包含一個(gè)日志級(jí)別(loglevel)信息,“info(信息類型的信息)”、“debug(一般用于調(diào)試程序的記錄信息)”、“error(錯(cuò)誤信息)”、“fatal(致命異常信息)”等分別用來描述該條信息的重要性??蛇x地,上述的記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志可以為去除掉“info”、“dubug”信息,包含“error”和/或“fatal”信息的日志。具體地,“info(信息類型的信息)”、“debug(一般用于調(diào)試程序的記錄信息)”、“error(錯(cuò)誤信息)”、“fatal(致命異常信息)”等為四個(gè)級(jí)別的日志級(jí)別信息,這四個(gè)級(jí)別的日志級(jí)別信息分別用來描述信息的重要性??蛇x地,在本發(fā)明的上述實(shí)施例中,裝置還可以包括:發(fā)送模塊,用于通過郵件發(fā)送用于記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志。例如,將所有結(jié)構(gòu)化存儲(chǔ)用于記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志匯總成一個(gè)文件后,通過郵件發(fā)送給指定的接收人。通過上述實(shí)施例,在通過存儲(chǔ)模塊結(jié)構(gòu)化存儲(chǔ)用于記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志之后,將所有結(jié)構(gòu)化存儲(chǔ)用于記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志匯總成一個(gè)文件后,可以通過發(fā)送模塊以郵件方式直接發(fā)送給指定的接收人,接收人可以直接看到包含原始出錯(cuò)信息的日志,以便于接收人直接對(duì)日志進(jìn)行糾錯(cuò)處理。其中,指定的接收人可以為與通過發(fā)送模塊發(fā)送的日志對(duì)應(yīng)的服務(wù)器或者計(jì)算機(jī)的所屬人,在此不做具體地限定。具體地,在通過存儲(chǔ)模塊結(jié)構(gòu)化存儲(chǔ)用于記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志之后,將所有結(jié)構(gòu)化存儲(chǔ)的日志匯總成一個(gè)文件后,可以通過發(fā)送模塊以郵件方 式發(fā)送記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志,記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志可以為包含“error”和/或“fatal”信息的日志。其中,通過發(fā)送模塊以郵件方式發(fā)送的信息可以包括:服務(wù)器獲取日志的時(shí)間、日志中記錄程序運(yùn)行出錯(cuò)的詳細(xì)信息以及預(yù)處理之后的信息,預(yù)處理之后的信息可以包含每個(gè)日志對(duì)應(yīng)的服務(wù)器地址或計(jì)算機(jī)名。在本發(fā)明的上述實(shí)施例中,存儲(chǔ)模塊還包括:提取子模塊,用于從用于記錄程序運(yùn)行出錯(cuò)的一個(gè)或多個(gè)級(jí)別的日志中提取預(yù)設(shè)字段的屬性信息;存儲(chǔ)子模塊,用于將提取到的屬性信息存儲(chǔ)在數(shù)據(jù)庫的報(bào)表中,其中,報(bào)表中記錄有預(yù)設(shè)字段與屬性信息的對(duì)應(yīng)關(guān)系??蛇x地,該裝置還包括:查詢模塊,用于通過關(guān)鍵字查詢存儲(chǔ)在數(shù)據(jù)庫的報(bào)表中的日志,得到查詢到的日志;判斷模塊,用于根據(jù)預(yù)設(shè)字段中的標(biāo)識(shí)字段判斷查詢到的日志中是否存在未進(jìn)行糾錯(cuò)處理的日志;糾錯(cuò)模塊,用于在判斷模塊判斷為是時(shí),遠(yuǎn)程調(diào)用糾錯(cuò)程序?qū)ξ催M(jìn)行糾錯(cuò)處理的日志進(jìn)行糾錯(cuò)處理。通過上述實(shí)施例,通過第一存儲(chǔ)子模塊結(jié)構(gòu)化存儲(chǔ)一個(gè)或多個(gè)級(jí)別的日志,未經(jīng)處理的Nlog日志原始文件如圖2所示,通過提取子模塊對(duì)一個(gè)或多個(gè)級(jí)別的日志提取預(yù)設(shè)字段的屬性信息,將提取到的屬性信息通過存儲(chǔ)子模塊存儲(chǔ)在數(shù)據(jù)庫的報(bào)表中,未經(jīng)處理的Nlog日志的原始文件結(jié)構(gòu)化存儲(chǔ)了日志的原始信息,但是數(shù)據(jù)量比較大,尤其當(dāng)跟蹤調(diào)試信息的數(shù)據(jù)量非常大時(shí),工作量將非常大,而經(jīng)過提取子模塊處理,并經(jīng)過第二存儲(chǔ)子模塊存儲(chǔ)在數(shù)據(jù)庫的報(bào)表中的日志的屬性信息,包含不同類型的數(shù)據(jù)參數(shù),每個(gè)數(shù)據(jù)參數(shù)代表不同的含義,信息明了,方便查詢。具體地,一個(gè)或多個(gè)級(jí)別的日志用于記錄程序運(yùn)行出錯(cuò)的error和fatal信息,在對(duì)記錄程序運(yùn)行出錯(cuò)的error和fatal信息進(jìn)行存儲(chǔ)時(shí),通過提取子模塊對(duì)結(jié)構(gòu)化存儲(chǔ)的日志進(jìn)行預(yù)設(shè)字段的屬性信息的提取,將提取到的屬性信息通過第二存儲(chǔ)子模塊存儲(chǔ)到數(shù)據(jù)庫的報(bào)表中,在將提取到的屬性信息存儲(chǔ)在數(shù)據(jù)庫的報(bào)表中之后,可以按照不同分類,不同維度,根據(jù)關(guān)鍵字,通過查詢模塊查詢存儲(chǔ)在數(shù)據(jù)庫的報(bào)表中的相應(yīng)日志,并根據(jù)Flag標(biāo)識(shí)字段判斷查詢到的日志是否經(jīng)過處理,對(duì)未處理的日志,根據(jù)詳細(xì)的錯(cuò)誤信息定位出錯(cuò)的原因,最終通過遠(yuǎn)程調(diào)用相應(yīng)的糾錯(cuò)程序?qū)υ撐刺幚淼娜罩具M(jìn)行糾錯(cuò)處理。可選地,該裝置還包括:字段修改模塊,用于在糾錯(cuò)模塊遠(yuǎn)程調(diào)用糾錯(cuò)程序?qū)ξ催M(jìn)行糾錯(cuò)處理的日志進(jìn)行糾錯(cuò)處理之后,修改經(jīng)過糾錯(cuò)處理后的日志的標(biāo)識(shí)字段。其中,若標(biāo)識(shí)字段為Flag字段,修改Flag字段的方式可以為變更該日志的Flag字段的 屬性值。在本發(fā)明的實(shí)施例中,預(yù)設(shè)字段包含F(xiàn)lag字段,F(xiàn)lag字段用于標(biāo)記一個(gè)或多個(gè)級(jí)別的日志是否經(jīng)過糾錯(cuò)處理。通過上述實(shí)施例,將結(jié)構(gòu)化存儲(chǔ)的日志按照預(yù)設(shè)字段提取屬性信息,并將提取到的屬性信息進(jìn)行存儲(chǔ),該屬性信息中包含F(xiàn)lag字段,F(xiàn)lag字段用于標(biāo)記該屬性信息對(duì)應(yīng)的日志是否經(jīng)過糾錯(cuò)處理,避免了對(duì)一些已經(jīng)處理過的日志信息進(jìn)行再處理的情況發(fā)生,從而提高了處理性能和處理效率。其中,F(xiàn)lag字段為枚舉值,其屬性值可以為“0”和“1”,若Flag標(biāo)識(shí)字段的屬性值為“1”時(shí),則表示日志信息已經(jīng)被處理,不再重復(fù)處理;若Flag標(biāo)識(shí)字段的屬性值為“0”時(shí),則表示日志信息沒有被處理。在本發(fā)明實(shí)施例中,通過第一獲取模塊20獲取采集到的日志,以及通過第二獲取模塊40獲取日志級(jí)別,并通過存儲(chǔ)模塊60將一個(gè)或多個(gè)級(jí)別的日志結(jié)構(gòu)化存儲(chǔ)在數(shù)據(jù)庫中,解決了現(xiàn)有的日志處理機(jī)制處理效率較低的技術(shù)問題。此外,根據(jù)日志級(jí)別字段存儲(chǔ)符合要求的日志,避免了對(duì)無需處理的日志進(jìn)行處理,并采用數(shù)據(jù)庫進(jìn)行存儲(chǔ)的方式,減少了數(shù)據(jù)存儲(chǔ)量,解決了現(xiàn)有技術(shù)中處理資源浪費(fèi)的技術(shù)問題,實(shí)現(xiàn)了對(duì)日志的高效處理。上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。在本發(fā)明的上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的技術(shù)內(nèi)容,可通過其它的方式實(shí)現(xiàn)。其中,以上所描述的裝置實(shí)施例僅僅是示意性的,例如所述單元的劃分,可以為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可為個(gè)人計(jì)算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、只讀存儲(chǔ)器(ROM,Read-OnlyMemory)、隨機(jī)存取存儲(chǔ)器(RAM,RandomAccessMemory)、移動(dòng)硬盤、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本
技術(shù)領(lǐng)域:
的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。當(dāng)前第1頁1 2 3