本發(fā)明涉及通信技術(shù)領(lǐng)域,特別是涉及一種日志文件的分析方法和系統(tǒng)。
背景技術(shù):
在很多大型軟件、電子、網(wǎng)絡(luò)系統(tǒng)中,日志文件都是必不可少的存在,它們對(duì)于查閱系統(tǒng)狀況有著重要意義。在大型軟件系統(tǒng)中,通常有很多線程同時(shí)運(yùn)行,它們的日志一般輸入在同一個(gè)日志文件中。如果日志設(shè)計(jì)者令每個(gè)重要函數(shù)的運(yùn)行都要在日志里記錄一下,那么日志的內(nèi)容無疑會(huì)變得非常繁雜。這類繁雜的日志通常為多線程并行,按發(fā)生時(shí)間先后輸出日志到一個(gè)文件;或者有很多硬件終端接入,它們的驅(qū)動(dòng)層、功能層等等的操作都會(huì)記錄日志;或者有很多在線用戶同時(shí)接入服務(wù)器后端,他們的行為都將被記錄在日志中。
日志文件的存在有著非常重要的意義。例如,它們?yōu)橄挛粰C(jī)軟件開發(fā)或者網(wǎng)站后臺(tái)維護(hù)人員分析系統(tǒng)行為、診斷系統(tǒng)運(yùn)行是否運(yùn)行正常有著非常重要的意義。日志文件的主要目的是為了幫助系統(tǒng)開發(fā)人員定位和解決問題,但是使用者往往也能利用日志文件中異常數(shù)據(jù)進(jìn)行系統(tǒng)異常的處理,但隨著運(yùn)行時(shí)間的增加,尤其是上述多線程并行的系統(tǒng),日志文件所包含的信息量會(huì)越來越多,使用者想要從日志文件中獲得有效信息的困難也越來越高。
內(nèi)容過為密集的日志文件,包含了多個(gè)線程的日志,信息量大,時(shí)間節(jié)點(diǎn)非常精確,由于現(xiàn)有的日志文件大多是txt的簡(jiǎn)單文字格式,只能使用系統(tǒng)自帶的文本編輯軟件進(jìn)行打開、閱讀,并沒有分析系統(tǒng)幫助查閱,可閱讀性不高,只能靠程序員一行一行地肉眼搜索,程序員很難在短時(shí)間內(nèi)定位到自己所要找的問題及事件,使得日志文件的定位查找、搜索效率不高。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種日志文件的分析方法和系統(tǒng),以解決日志文件的定位查找、搜索效率不高的問題。
為了解決上述問題,本發(fā)明公開了一種日志文件的分析方法,包括:建立數(shù)據(jù)庫,所述數(shù)據(jù)庫包括流程關(guān)鍵詞和/或?qū)ο箨P(guān)鍵詞;接收待分析的日志文件,從所述日志文件中依次按行提取待分析的文字流;將所述文字流與所述數(shù)據(jù)庫中的流程關(guān)鍵詞或?qū)ο箨P(guān)鍵詞進(jìn)行匹配;根據(jù)匹配結(jié)果,將所述文字流歸類到其對(duì)應(yīng)的流程關(guān)鍵詞所屬的流程或?qū)ο箨P(guān)鍵詞所屬的對(duì)象中;將所述文字流按照其所屬的流程或?qū)ο蠓诸惔鎯?chǔ)。
可選地,所述將所述文字流按照其所屬的流程或?qū)ο蠓诸惔鎯?chǔ)之后,還包括:判斷所述日志文件中是否包含待分析的文字流;當(dāng)所述日志文件中包含待分析的文字流時(shí),返回所述從所述日志文件中依次按行提取待分析的文字流的步驟;當(dāng)所述日志文件中未包含待分析的文字流時(shí),以所述流程或?qū)ο鬄閱挝伙@示所述日志文件,并結(jié)束對(duì)所述日志文件的分析。
可選地,所述流程關(guān)鍵詞包括一級(jí)關(guān)鍵詞和二級(jí)關(guān)鍵詞,所述一級(jí)關(guān)鍵詞標(biāo)志流程開始或結(jié)束,所述二級(jí)關(guān)鍵詞標(biāo)志所述一級(jí)關(guān)鍵詞所屬流程中的子流程;所述將所述文字流與所述數(shù)據(jù)庫中的流程關(guān)鍵詞進(jìn)行匹配,包括:從所述文字流中查找與數(shù)據(jù)庫對(duì)應(yīng)的所述一級(jí)關(guān)鍵詞;當(dāng)從所述文字流中查找到與數(shù)據(jù)庫對(duì)應(yīng)的一級(jí)關(guān)鍵詞時(shí),匹配成功,標(biāo)記該一級(jí)關(guān)鍵詞;當(dāng)從所述文字流中未查找到與數(shù)據(jù)庫對(duì)應(yīng)的一級(jí)關(guān)鍵詞時(shí),從所述文字流中查找與數(shù)據(jù)庫對(duì)應(yīng)的所述二級(jí)關(guān)鍵詞;當(dāng)從所述文字流中查找到與數(shù)據(jù)庫對(duì)應(yīng)的二級(jí)關(guān)鍵詞時(shí),匹配成功,標(biāo)記該二級(jí)關(guān)鍵詞。
可選地,所述根據(jù)匹配結(jié)果,將所述文字流歸類到其對(duì)應(yīng)的流程關(guān)鍵詞所屬的流程中,包括:當(dāng)所述文字流中標(biāo)記有一級(jí)關(guān)鍵詞時(shí),將所述文字流歸類到所述一級(jí)關(guān)鍵詞標(biāo)志的流程中;當(dāng)所述文字流中未標(biāo)記有一級(jí)關(guān)鍵詞但標(biāo)記有二級(jí)關(guān)鍵詞時(shí),將所述文字流歸類到所述二級(jí)關(guān)鍵詞標(biāo)志的子流程所對(duì)應(yīng)的流程中。
可選地,所述將所述文字流按照其所屬的流程分類存儲(chǔ),包括:將所述文字流所屬的流程存儲(chǔ)為流程列表;將所述文字流存儲(chǔ)為所述流程列表中對(duì) 應(yīng)的流程信息。
可選地,所述將所述文字流與所述數(shù)據(jù)庫中的對(duì)象關(guān)鍵詞進(jìn)行匹配,包括:從所述文字流中查找與數(shù)據(jù)庫對(duì)應(yīng)的所述對(duì)象關(guān)鍵詞;當(dāng)從所述文字流中查找到與數(shù)據(jù)庫對(duì)應(yīng)的對(duì)象關(guān)鍵詞時(shí),匹配成功;當(dāng)從所述文字流中未查找到與數(shù)據(jù)庫對(duì)應(yīng)的對(duì)象關(guān)鍵詞時(shí),匹配失敗,根據(jù)所述文字流創(chuàng)建新對(duì)象并添加到所述數(shù)據(jù)庫中。
可選地,所述根據(jù)匹配結(jié)果,將所述文字流歸類到其對(duì)應(yīng)的對(duì)象關(guān)鍵詞所屬的對(duì)象中,包括:當(dāng)匹配成功時(shí),將所述文字流歸類到其對(duì)應(yīng)的對(duì)象關(guān)鍵詞所屬的對(duì)象中;當(dāng)匹配失敗時(shí),將所述文字流歸類到所述新對(duì)象中。
可選地,所述將所述文字流按照其所屬的對(duì)象分類存儲(chǔ),包括:將所述文字流所屬的對(duì)象存儲(chǔ)為對(duì)象列表;將所述文字流存儲(chǔ)為所述對(duì)象列表中對(duì)應(yīng)的對(duì)象信息。
可選地,還包括:統(tǒng)計(jì)所述文字流的運(yùn)行時(shí)間、事件個(gè)數(shù)和對(duì)應(yīng)的事件級(jí)別;將同一流程下各文字流的運(yùn)行時(shí)間相加,和作為該流程的持續(xù)時(shí)間;根據(jù)同一流程下各文字流的事件個(gè)數(shù)和對(duì)應(yīng)的事件級(jí)別,統(tǒng)計(jì)得到該流程的錯(cuò)誤數(shù)量。
本發(fā)明還公開了一種日志文件的分析系統(tǒng),包括:數(shù)據(jù)庫建立模塊,用于建立數(shù)據(jù)庫,所述數(shù)據(jù)庫包括流程關(guān)鍵詞和/或?qū)ο箨P(guān)鍵詞;提取模塊,用于接收待分析的日志文件,從所述日志文件中依次按行提取待分析的文字流;匹配模塊,用于將所述文字流與所述數(shù)據(jù)庫中的流程關(guān)鍵詞或?qū)ο箨P(guān)鍵詞進(jìn)行匹配;歸類模塊,用于根據(jù)匹配結(jié)果,將所述文字流歸類到其對(duì)應(yīng)的流程關(guān)鍵詞所屬的流程或?qū)ο箨P(guān)鍵詞所屬的對(duì)象中;存儲(chǔ)模塊,用于將所述文字流按照其所屬的流程或?qū)ο蠓诸惔鎯?chǔ)。
可選地,還包括:判斷顯示模塊,用于所述存儲(chǔ)模塊將所述文字流按照其所屬的流程或?qū)ο蠓诸惔鎯?chǔ)之后,判斷所述日志文件中是否包含待分析的文字流;當(dāng)所述日志文件中包含待分析的文字流時(shí),返回所述提取模塊從所述日志文件中依次按行提取待分析的文字流;當(dāng)所述日志文件中未包含待分析的文字流時(shí),以所述流程或?qū)ο鬄閱挝伙@示所述日志文件,并結(jié)束對(duì)所述 日志文件的分析。
可選地,所述流程關(guān)鍵詞包括一級(jí)關(guān)鍵詞和二級(jí)關(guān)鍵詞,所述一級(jí)關(guān)鍵詞標(biāo)志流程開始或結(jié)束,所述二級(jí)關(guān)鍵詞標(biāo)志所述一級(jí)關(guān)鍵詞所屬流程中的子流程;所述匹配模塊包括流程匹配子模塊;所述流程匹配子模塊,用于從所述文字流中查找與數(shù)據(jù)庫對(duì)應(yīng)的所述一級(jí)關(guān)鍵詞;當(dāng)從所述文字流中查找到與數(shù)據(jù)庫對(duì)應(yīng)的一級(jí)關(guān)鍵詞時(shí),匹配成功,標(biāo)記該一級(jí)關(guān)鍵詞;當(dāng)從所述文字流中未查找到與數(shù)據(jù)庫對(duì)應(yīng)的一級(jí)關(guān)鍵詞時(shí),從所述文字流中查找與數(shù)據(jù)庫對(duì)應(yīng)的所述二級(jí)關(guān)鍵詞;當(dāng)從所述文字流中查找到與數(shù)據(jù)庫對(duì)應(yīng)的二級(jí)關(guān)鍵詞時(shí),匹配成功,標(biāo)記該二級(jí)關(guān)鍵詞。
可選地,所述歸類模塊包括流程歸類子模塊;所述流程歸類子模塊用于當(dāng)所述文字流中標(biāo)記有一級(jí)關(guān)鍵詞時(shí),將所述文字流歸類到所述一級(jí)關(guān)鍵詞標(biāo)志的流程中;當(dāng)所述文字流中未標(biāo)記有一級(jí)關(guān)鍵詞但標(biāo)記有二級(jí)關(guān)鍵詞時(shí),將所述文字流歸類到所述二級(jí)關(guān)鍵詞標(biāo)志的子流程所對(duì)應(yīng)的流程中。
可選地,所述存儲(chǔ)模塊包括流程存儲(chǔ)子模塊;所述流程存儲(chǔ)子模塊,用于將所述文字流所屬的流程存儲(chǔ)為流程列表;將所述文字流存儲(chǔ)為所述流程列表中對(duì)應(yīng)的流程信息。
可選地,所述匹配模塊包括對(duì)象匹配子模塊;所述對(duì)象匹配子模塊,用于從所述文字流中查找與數(shù)據(jù)庫對(duì)應(yīng)的所述對(duì)象關(guān)鍵詞;當(dāng)從所述文字流中查找到與數(shù)據(jù)庫對(duì)應(yīng)的對(duì)象關(guān)鍵詞時(shí),匹配成功;當(dāng)從所述文字流中未查找到與數(shù)據(jù)庫對(duì)應(yīng)的對(duì)象關(guān)鍵詞時(shí),匹配失敗,根據(jù)所述文字流創(chuàng)建新對(duì)象并添加到所述數(shù)據(jù)庫中。
可選地,所述歸類模塊包括對(duì)象歸類子模塊;所述對(duì)象歸類子模塊,用于當(dāng)匹配成功時(shí),將所述文字流歸類到其對(duì)應(yīng)的對(duì)象關(guān)鍵詞所屬的對(duì)象中;當(dāng)匹配失敗時(shí),將所述文字流歸類到所述新對(duì)象中。
可選地,所述存儲(chǔ)模塊包括對(duì)象存儲(chǔ)子模塊;所述對(duì)象存儲(chǔ)子模塊,用于將所述文字流所屬的對(duì)象存儲(chǔ)為對(duì)象列表;將所述文字流存儲(chǔ)為所述對(duì)象列表中對(duì)應(yīng)的對(duì)象信息。
可選地,還包括:
統(tǒng)計(jì)模塊,用于統(tǒng)計(jì)所述文字流的運(yùn)行時(shí)間、事件個(gè)數(shù)和對(duì)應(yīng)的事件級(jí)別;將同一流程下各文字流的運(yùn)行時(shí)間相加,和作為該流程的持續(xù)時(shí)間;根據(jù)同一流程下各文字流的事件個(gè)數(shù)和對(duì)應(yīng)的事件級(jí)別,統(tǒng)計(jì)得到該流程的錯(cuò)誤數(shù)量。
與現(xiàn)有技術(shù)相比,本發(fā)明包括以下優(yōu)點(diǎn):
本發(fā)明通過首先建立數(shù)據(jù)庫,所述數(shù)據(jù)庫包括流程關(guān)鍵詞和/或?qū)ο箨P(guān)鍵詞;其次接收待分析的日志文件,從所述日志文件中依次按行提取待分析的文字流;再次將所述文字流與所述數(shù)據(jù)庫中的流程關(guān)鍵詞或?qū)ο箨P(guān)鍵詞進(jìn)行匹配;復(fù)次根據(jù)匹配結(jié)果,將所述文字流歸類到其對(duì)應(yīng)的流程關(guān)鍵詞所屬的流程或?qū)ο箨P(guān)鍵詞所屬的對(duì)象中;最后將所述文字流按照其所屬的流程或?qū)ο蠓诸惔鎯?chǔ),實(shí)現(xiàn)了對(duì)日志文件的智能分析,能夠智能地分解多線程日志的繁雜內(nèi)容,將日志文件按系統(tǒng)動(dòng)作分割為若干流程或?qū)ο?,將所述文字流按照其所屬的流程或?qū)ο蠓诸惔鎯?chǔ),大大增加了日志文件的可閱讀性和定位查找、搜索效率,方便程序員進(jìn)行閱讀、搜索。
附圖說明
圖1是本發(fā)明實(shí)施例一種日志文件的分析方法的流程圖;
圖2是本發(fā)明另一實(shí)施例一種日志文件的分析方法的流程圖;
圖3是本發(fā)明實(shí)施例日志文件分析系統(tǒng)的分析選項(xiàng)卡界面示意圖;
圖4是本發(fā)明實(shí)施例日志文件分析系統(tǒng)的對(duì)象選項(xiàng)卡界面示意圖;
圖5是本發(fā)明實(shí)施例按流程對(duì)日志文件進(jìn)行分析的方法的流程圖;
圖6是本發(fā)明實(shí)施例按對(duì)象對(duì)日志文件進(jìn)行分析的方法的流程圖;
圖7是本發(fā)明實(shí)施例一種日志文件的分析系統(tǒng)的結(jié)構(gòu)框圖;
圖8是本發(fā)明另一實(shí)施例一種日志文件的分析系統(tǒng)的結(jié)構(gòu)框圖;
圖9是本發(fā)明另一實(shí)施例一種日志文件的分析系統(tǒng)的結(jié)構(gòu)框圖。
具體實(shí)施方式
為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附 圖和具體實(shí)施方式對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明。
實(shí)施例一:
參照?qǐng)D1,示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種日志文件的分析方法實(shí)施例的步驟流程圖,具體可以包括如下步驟:
步驟101,建立數(shù)據(jù)庫,所述數(shù)據(jù)庫包括流程關(guān)鍵詞和/或?qū)ο箨P(guān)鍵詞。
本實(shí)施例在對(duì)日志文件進(jìn)行分析之前,先建立數(shù)據(jù)庫。數(shù)據(jù)庫具體可以包括流程數(shù)據(jù)庫和對(duì)象數(shù)據(jù)庫,其中,流程數(shù)據(jù)庫包括流程關(guān)鍵詞,流程關(guān)鍵詞具體可以是標(biāo)志流程開始或結(jié)束的關(guān)鍵詞;對(duì)象數(shù)據(jù)庫包括對(duì)象關(guān)鍵詞,對(duì)象關(guān)鍵詞是能夠區(qū)分對(duì)象的關(guān)鍵詞,具體可以是對(duì)象名稱。具體實(shí)現(xiàn)時(shí)可以根據(jù)實(shí)際硬件情況建立對(duì)象數(shù)據(jù)庫。
需要說明的是,本實(shí)施例對(duì)建立數(shù)據(jù)庫的具體方式和數(shù)據(jù)庫的具體形式不做限定,數(shù)據(jù)庫具體可以是列表等形式,包含能夠標(biāo)志流程和/或區(qū)分對(duì)象的關(guān)鍵詞即可。并且,本實(shí)施例所述數(shù)據(jù)庫包括流程關(guān)鍵詞和/或?qū)ο箨P(guān)鍵詞,代表三種實(shí)現(xiàn)方式,即(1)數(shù)據(jù)庫中只包括流程關(guān)鍵詞;(2)數(shù)據(jù)庫中只包括對(duì)象關(guān)鍵詞;(3)數(shù)據(jù)庫中包括流程關(guān)鍵詞和對(duì)象關(guān)鍵詞。具體實(shí)現(xiàn)時(shí),可以根據(jù)實(shí)際需要任意選擇一種實(shí)現(xiàn)方式即可。
需要說明的是,本實(shí)施例中流程關(guān)鍵詞用于流程分析法,對(duì)象關(guān)鍵詞用于對(duì)象分析法,由于流程分析法與對(duì)象分析法的步驟大體相同,因此本實(shí)施例對(duì)根據(jù)流程關(guān)鍵詞進(jìn)行分析與依據(jù)對(duì)象關(guān)鍵詞進(jìn)行分析進(jìn)行統(tǒng)一說明,具體實(shí)現(xiàn)時(shí),可以選擇流程分析法、對(duì)象分析法中的一種或幾種進(jìn)行分析,本實(shí)施例對(duì)此不做限制。
步驟102,接收待分析的日志文件,從所述日志文件中依次按行提取待分析的文字流。
日志文件通常包含大量信息,內(nèi)容非常詳細(xì),時(shí)間節(jié)點(diǎn)非常精確,而且包含了多個(gè)線程的日志,但是包含大量信息的日志文件同樣是由很多行文字流組成的,只是一般信息量越大的日志文件,所包含的文字流行數(shù)也越多。本實(shí)施例接收待分析的日志文件,然后從所述日志文件中依次按行提取待分析的文字流,依次按行提取文字流即依次從日志文件的開頭處開始提取一行 待分析的文字流,因?yàn)槿罩疚募械奈淖至魍ǔJ歉鶕?jù)時(shí)間先后進(jìn)行記錄的,依次按行提取可以盡快遍歷文字流,并且容易保證不遺漏,可以通過判斷所述日志文件是否結(jié)束來判斷是否遍歷完所述日志文件。當(dāng)然如果按照其他順序提取文字流也可以,同樣需要保證提取完日志文件所包含的所有文字流,只是按照其他順序提取沒有依次按行提取效率高。
需要說明的是,由于一行文字流通常包含完整的信息,因此本實(shí)施例采取按行提取的方式進(jìn)行提取文字流,文字流具體可以包括:所述文字流的日期、時(shí)間、來源、事件級(jí)別和內(nèi)容等信息。
步驟103,將所述文字流與所述數(shù)據(jù)庫中的流程關(guān)鍵詞或?qū)ο箨P(guān)鍵詞進(jìn)行匹配。
本實(shí)施例中提取到一行待分析的文字流之后,將該行文字流與步驟101中建立的數(shù)據(jù)庫進(jìn)行匹配,具體可以與數(shù)據(jù)庫中的流程關(guān)鍵詞或?qū)ο箨P(guān)鍵詞進(jìn)行匹配。需要說明的是,流程與對(duì)象是兩個(gè)維度的概念,將所述文字流與流程關(guān)鍵詞進(jìn)行匹配是為了獲知該行文字流所屬的具體流程,即屬于“抽真空”這一流程步驟;而將所述文字流與對(duì)象進(jìn)行匹配,是為了獲知該行文字流所對(duì)應(yīng)的硬件對(duì)象。如果在該行文字流中可以查找到數(shù)據(jù)庫中所包括的流程關(guān)鍵詞,則說明按照流程關(guān)鍵詞匹配成功;如果在該行文字流中可以查找到數(shù)據(jù)庫中所包括的對(duì)象關(guān)鍵詞,則說明按照對(duì)象關(guān)鍵詞匹配成功。匹配成功后,即可獲知該行文字流所屬的具體流程或者具體對(duì)象了。
步驟104,根據(jù)匹配結(jié)果,將所述文字流歸類到其對(duì)應(yīng)的流程關(guān)鍵詞所屬的流程或?qū)ο箨P(guān)鍵詞所屬的對(duì)象中。
通過步驟103將所提取的該行文字流與所述數(shù)據(jù)庫中的流程關(guān)鍵詞或?qū)ο箨P(guān)鍵詞進(jìn)行匹配,可以獲知該行文字流所屬的具體流程或?qū)ο?,即?shí)現(xiàn)了對(duì)該行文字流按照流程或?qū)ο筮M(jìn)行歸類,根據(jù)匹配結(jié)果所顯示的流程或?qū)ο?,就可以將該行文字流歸類到其對(duì)應(yīng)的流程關(guān)鍵詞所屬的流程或?qū)ο箨P(guān)鍵詞所屬的對(duì)象中了。由于日志文件中的所有文字流都要經(jīng)過步驟104的歸類步驟,因此最終同一個(gè)流程類別下可以包括多行文字流,一個(gè)對(duì)象類別下也可以包括多行文字流,但是對(duì)于一行文字流來說,屬于一個(gè)特定的流程或?qū)? 象。
本實(shí)施例說明了兩種歸類方式,即按照流程歸類、按照對(duì)象歸類,沒有提及其他歸類方式是因?yàn)閺膶?shí)際工作角度來看,這兩種是最有實(shí)際應(yīng)用價(jià)值的分類方法,可以有效提高開發(fā)人員查閱日志的效率。至于其他歸類方式,因?yàn)橄鄬?duì)實(shí)用性不夠,且實(shí)現(xiàn)時(shí)步驟流程與上述兩種歸類方式相似,因此本實(shí)施例不再說明,但是本實(shí)施例并非對(duì)具體歸類方式的限制。
步驟105,將所述文字流按照其所屬的流程或?qū)ο蠓诸惔鎯?chǔ)。
本實(shí)施例中將所述文字流按照其所屬的流程或?qū)ο蠓诸惔鎯?chǔ),即將該行文字流存儲(chǔ)到其所屬的流程類別下,或存儲(chǔ)到其所屬的對(duì)象類別下。例如,該行文字流所述的流程為“抽真空”,則將該行文字流存儲(chǔ)在“抽真空”這一流程類別下,后續(xù)點(diǎn)擊“抽真空”這一流程類別,該行文字流就可以顯示出來。
本實(shí)施例通過首先建立數(shù)據(jù)庫,所述數(shù)據(jù)庫包括流程關(guān)鍵詞和/或?qū)ο箨P(guān)鍵詞;其次接收待分析的日志文件,從所述日志文件中依次按行提取待分析的文字流;再次將所述文字流與所述數(shù)據(jù)庫中的流程關(guān)鍵詞或?qū)ο箨P(guān)鍵詞進(jìn)行匹配;復(fù)次根據(jù)匹配結(jié)果,將所述文字流歸類到其對(duì)應(yīng)的流程關(guān)鍵詞所屬的流程或?qū)ο箨P(guān)鍵詞所屬的對(duì)象中;最后將所述文字流按照其所屬的流程或?qū)ο蠓诸惔鎯?chǔ),實(shí)現(xiàn)了對(duì)日志文件的智能分析,能夠智能地分解多線程日志的繁雜內(nèi)容,將日志文件按系統(tǒng)動(dòng)作分割為若干流程或?qū)ο?,將所述文字流按照其所屬的流程或?qū)ο蠓诸惔鎯?chǔ),大大增加了日志文件的可閱讀性和定位查找、搜索效率,方便程序員進(jìn)行閱讀、搜索。
實(shí)施例二:
在上述實(shí)施例的基礎(chǔ)上,本實(shí)施例繼續(xù)說明日志文件的分析方法。
參照?qǐng)D2,示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種日志文件的分析方法實(shí)施例的步驟流程圖,具體可以包括如下步驟:
步驟201,建立數(shù)據(jù)庫,所述數(shù)據(jù)庫包括流程關(guān)鍵詞和/或?qū)ο箨P(guān)鍵詞。
本實(shí)施例在對(duì)日志文件進(jìn)行分析之前,先建立數(shù)據(jù)庫。數(shù)據(jù)庫具體可以包括流程數(shù)據(jù)庫和對(duì)象數(shù)據(jù)庫,其中,流程數(shù)據(jù)庫包括流程關(guān)鍵詞,流程關(guān) 鍵詞具體可以是標(biāo)志流程開始或結(jié)束的關(guān)鍵詞;對(duì)象數(shù)據(jù)庫包括對(duì)象關(guān)鍵詞,對(duì)象關(guān)鍵詞是能夠區(qū)分對(duì)象的關(guān)鍵詞,具體可以是對(duì)象名稱。具體實(shí)現(xiàn)時(shí)可以根據(jù)實(shí)際硬件情況建立對(duì)象數(shù)據(jù)庫。
步驟202,接收待分析的日志文件,從所述日志文件中依次按行提取待分析的文字流。
本實(shí)施例接收待分析的日志文件,然后從所述日志文件中依次按行提取待分析的文字流,依次按行提取文字流即依次從日志文件的開頭處開始提取一行待分析的文字流,因?yàn)槿罩疚募械奈淖至魍ǔJ歉鶕?jù)時(shí)間先后進(jìn)行記錄的,依次按行提取可以盡快遍歷文字流,并且容易保證不遺漏,可以通過判斷所述日志文件是否結(jié)束來判斷是否遍歷完所述日志文件。當(dāng)然如果按照其他順序提取文字流也可以,同樣需要保證提取完日志文件所包含的所有文字流,只是按照其他順序提取沒有依次按行提取效率高。
下面結(jié)合圖3所示的日志文件分析系統(tǒng)的分析選項(xiàng)卡界面示意圖對(duì)本實(shí)施例進(jìn)行說明。本實(shí)施例中步驟202接收待分析的日志文件,可以通過圖3中的導(dǎo)入按鈕來實(shí)現(xiàn),點(diǎn)擊導(dǎo)入按鈕,接收待分析的日志文件,例如可以接收多線程的日志內(nèi)容,并且在關(guān)鍵函數(shù)、關(guān)鍵流程處將時(shí)間點(diǎn)記錄在日志中。接收待分析的日志文件之后,在所述界面中上部就會(huì)顯示出日志文件的名字“syslog20141017-2.txt”,由于任何一個(gè)軟件系統(tǒng)輸出的日志文件都有相對(duì)比較統(tǒng)一的格式,所以能夠按照本實(shí)施例提供的日志文件的分析方法,將日志文件所包含的內(nèi)容智能分解為若干流程,顯示在圖3中的左側(cè)界面上。需要說明的是,圖4所示的日志文件分析系統(tǒng)的對(duì)象選項(xiàng)卡界面示意圖中,導(dǎo)入按鈕同樣可以實(shí)現(xiàn)步驟202接收待分析的日志文件的功能,本實(shí)施例在此不做贅述。
步驟203,將所述文字流與所述數(shù)據(jù)庫中的流程關(guān)鍵詞或?qū)ο箨P(guān)鍵詞進(jìn)行匹配。
本實(shí)施例中將步驟203分為“將所述文字流與所述數(shù)據(jù)庫中的流程關(guān)鍵詞進(jìn)行匹配”和“將所述文字流與所述數(shù)據(jù)庫中的對(duì)象關(guān)鍵詞進(jìn)行匹配”兩個(gè)部分進(jìn)行說明。
首先,對(duì)“將所述文字流與所述數(shù)據(jù)庫中的流程關(guān)鍵詞進(jìn)行匹配”進(jìn)行說明。本實(shí)施例中所述流程關(guān)鍵詞包括一級(jí)關(guān)鍵詞和二級(jí)關(guān)鍵詞,所述一級(jí)關(guān)鍵詞標(biāo)志流程開始或結(jié)束,例如機(jī)械手的取片放片。所述二級(jí)關(guān)鍵詞標(biāo)志所述一級(jí)關(guān)鍵詞所屬流程中的子流程,例如進(jìn)PM之前的抽氣開閥動(dòng)作。本實(shí)施例中所述將所述文字流與所述數(shù)據(jù)庫中的流程關(guān)鍵詞進(jìn)行匹配,具體可以通過以下方式來實(shí)現(xiàn):從所述文字流中查找與數(shù)據(jù)庫對(duì)應(yīng)的所述一級(jí)關(guān)鍵詞;當(dāng)從所述文字流中查找到與數(shù)據(jù)庫對(duì)應(yīng)的一級(jí)關(guān)鍵詞時(shí),匹配成功,標(biāo)記該一級(jí)關(guān)鍵詞;當(dāng)從所述文字流中未查找到與數(shù)據(jù)庫對(duì)應(yīng)的一級(jí)關(guān)鍵詞時(shí),從所述文字流中查找與數(shù)據(jù)庫對(duì)應(yīng)的所述二級(jí)關(guān)鍵詞;當(dāng)從所述文字流中查找到與數(shù)據(jù)庫對(duì)應(yīng)的二級(jí)關(guān)鍵詞時(shí),匹配成功,標(biāo)記該二級(jí)關(guān)鍵詞。在本發(fā)明的一種優(yōu)選實(shí)施例中,當(dāng)從所述文字流中查找到與數(shù)據(jù)庫對(duì)應(yīng)的一級(jí)關(guān)鍵詞時(shí),可以統(tǒng)計(jì)該行文字流的運(yùn)行時(shí)間、錯(cuò)誤數(shù)量等信息。
其次,對(duì)“將所述文字流與所述數(shù)據(jù)庫中的對(duì)象關(guān)鍵詞進(jìn)行匹配”進(jìn)行說明。本實(shí)施例中所述將所述文字流與所述數(shù)據(jù)庫中的對(duì)象關(guān)鍵詞進(jìn)行匹配,具體可以通過以下方式來實(shí)現(xiàn):從所述文字流中查找與數(shù)據(jù)庫對(duì)應(yīng)的所述對(duì)象關(guān)鍵詞;當(dāng)從所述文字流中查找到與數(shù)據(jù)庫對(duì)應(yīng)的對(duì)象關(guān)鍵詞時(shí),匹配成功;當(dāng)從所述文字流中未查找到與數(shù)據(jù)庫對(duì)應(yīng)的對(duì)象關(guān)鍵詞時(shí),匹配失敗,根據(jù)所述文字流創(chuàng)建新對(duì)象并添加到所述數(shù)據(jù)庫中。
步驟204,根據(jù)匹配結(jié)果,將所述文字流歸類到其對(duì)應(yīng)的流程關(guān)鍵詞所屬的流程或?qū)ο箨P(guān)鍵詞所屬的對(duì)象中。
本實(shí)施例中將步驟205分為“根據(jù)匹配結(jié)果,將所述文字流歸類到其對(duì)應(yīng)的流程關(guān)鍵詞所屬的流程中”和“根據(jù)匹配結(jié)果,將所述文字流歸類到其對(duì)應(yīng)的對(duì)象關(guān)鍵詞所屬的對(duì)象中”兩個(gè)部分進(jìn)行說明。
首先,對(duì)“根據(jù)匹配結(jié)果,將所述文字流歸類到其對(duì)應(yīng)的流程關(guān)鍵詞所屬的流程中”進(jìn)行說明。本實(shí)施例中所述根據(jù)匹配結(jié)果,將所述文字流歸類到其對(duì)應(yīng)的流程關(guān)鍵詞所屬的流程中,具體可以通過以下方式來實(shí)現(xiàn):當(dāng)所述文字流中標(biāo)記有一級(jí)關(guān)鍵詞時(shí),將所述文字流歸類到所述一級(jí)關(guān)鍵詞標(biāo)志的流程中;當(dāng)所述文字流中未標(biāo)記有一級(jí)關(guān)鍵詞但標(biāo)記有二級(jí)關(guān)鍵詞時(shí),將 所述文字流歸類到所述二級(jí)關(guān)鍵詞標(biāo)志的子流程所對(duì)應(yīng)的流程中。
其次,對(duì)“根據(jù)匹配結(jié)果,將所述文字流歸類到其對(duì)應(yīng)的對(duì)象關(guān)鍵詞所屬的對(duì)象中”進(jìn)行說明。本實(shí)施例中所述根據(jù)匹配結(jié)果,將所述文字流歸類到其對(duì)應(yīng)的對(duì)象關(guān)鍵詞所屬的對(duì)象中,具體可以通過以下方式來實(shí)現(xiàn):當(dāng)匹配成功時(shí),將所述文字流歸類到其對(duì)應(yīng)的對(duì)象關(guān)鍵詞所屬的對(duì)象中;當(dāng)匹配失敗時(shí),將所述文字流歸類到所述新對(duì)象中。
步驟205,將所述文字流按照其所屬的流程或?qū)ο蠓诸惔鎯?chǔ)。
本實(shí)施例中將步驟205分為“將所述文字流按照其所屬的流程分類存儲(chǔ)”和“將所述文字流按照其所屬的對(duì)象分類存儲(chǔ)”兩個(gè)部分進(jìn)行說明。
首先,對(duì)“根據(jù)匹配結(jié)果,將所述文字流歸類到其對(duì)應(yīng)的流程關(guān)鍵詞所屬的流程中”進(jìn)行說明。本實(shí)施例中所述將所述文字流按照其所屬的流程分類存儲(chǔ),具體可以通過以下方式來實(shí)現(xiàn):將所述文字流所屬的流程存儲(chǔ)為流程列表;將所述文字流存儲(chǔ)為所述流程列表中對(duì)應(yīng)的流程信息。需要說明的是,本實(shí)施例中所述流程信息具體可以包括所述文字流的日期、時(shí)間、來源、事件級(jí)別和內(nèi)容。
其次,對(duì)“將所述文字流按照其所屬的對(duì)象分類存儲(chǔ)”進(jìn)行說明。本實(shí)施例中所述將所述文字流按照其所屬的對(duì)象分類存儲(chǔ),具體可以通過以下方式來實(shí)現(xiàn):將所述文字流所屬的對(duì)象存儲(chǔ)為對(duì)象列表;將所述文字流存儲(chǔ)為所述對(duì)象列表中對(duì)應(yīng)的對(duì)象信息。本實(shí)施例中所述對(duì)象信息具體可以包括所述文字流的日期、時(shí)間、來源、事件級(jí)別和內(nèi)容。
步驟206,判斷所述日志文件中是否包含待分析的文字流。
本實(shí)施例在步驟205將所述文字流按照其所屬的流程或?qū)ο蠓诸惔鎯?chǔ)之后,都進(jìn)行判斷,即判斷所述日志文件中是否包含待分析的文字流,目的是為了確保該待分析日志文件中包含的所有文字流都通過本實(shí)施例提供的日志文件的分析方法進(jìn)行分析,以免有遺漏的文字流未進(jìn)行分析。
當(dāng)所述日志文件中包含待分析的文字流時(shí),說明該日志文件還沒有遍歷完,需要返回步驟202執(zhí)行從所述日志文件中依次按行提取待分析的文字流的步驟。當(dāng)所述日志文件中未包含待分析的文字流時(shí),說明該日志文件已經(jīng) 遍歷完,此時(shí)執(zhí)行步驟207,以所述流程或?qū)ο鬄閱挝伙@示所述日志文件,并結(jié)束對(duì)所述日志文件的分析。
步驟207,當(dāng)所述日志文件中未包含待分析的文字流時(shí),以所述流程或?qū)ο鬄閱挝伙@示所述日志文件,并結(jié)束對(duì)所述日志文件的分析。
從圖3所示的日志文件分析系統(tǒng)的分析選項(xiàng)卡界面示意圖中可以看出,單擊選擇一個(gè)子流程之后,“分析”選項(xiàng)卡下的右側(cè)窗口會(huì)顯示出對(duì)應(yīng)流程的日志內(nèi)容,即屬于該子流程的文字流,這樣就避免了大海撈針般地不停翻頁僅靠肉眼搜索,便于程序員快速查找、定位日志文件所反映的問題。本實(shí)施例將日志文件中的文字流歸類顯示,大大提高了開發(fā)、維護(hù)人員的搜索效率。將日志文件按流程或按對(duì)象進(jìn)行分門別類地顯示,大大增加了日志的可閱讀性和查找效率。
結(jié)合圖4所示的日志文件分析系統(tǒng)的對(duì)象選項(xiàng)卡界面示意圖,本實(shí)施例提供的日志文件的分析方法,通過自動(dòng)搜索歸類,可以將所有輸出了日志記錄的硬件對(duì)象進(jìn)行分類,對(duì)象列表顯示在左側(cè),單擊某個(gè)對(duì)象,屬于它們的日志內(nèi)容就可以顯示在右側(cè)窗口中。這樣自動(dòng)地歸類,可以免去程序員靠肉眼不停上下翻頁查找某個(gè)硬件對(duì)象狀態(tài)的辛苦。無論是按流程還是按對(duì)象查找,都可以實(shí)現(xiàn)高效率少耗時(shí)。
在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,日志文件的分析方法還包括:統(tǒng)計(jì)所述文字流的運(yùn)行時(shí)間、事件個(gè)數(shù)和對(duì)應(yīng)的事件級(jí)別;將同一流程下各文字流的運(yùn)行時(shí)間相加,和作為該流程的持續(xù)時(shí)間;根據(jù)同一流程下各文字流的事件個(gè)數(shù)和對(duì)應(yīng)的事件級(jí)別,統(tǒng)計(jì)得到該流程的錯(cuò)誤數(shù)量。需要說明的是,所述文字流的運(yùn)行時(shí)間,即其對(duì)應(yīng)的代碼運(yùn)行了多少時(shí)間,對(duì)應(yīng)圖3中的過程持續(xù)時(shí)間;事件個(gè)數(shù)是指該行文字流發(fā)生了多少件“系統(tǒng)事件”,“系統(tǒng)事件”是由IAP代碼庫定義的,分為從“UNKNOWN(嚴(yán)重的未知錯(cuò)誤)”到“VERBOSE(系統(tǒng)運(yùn)行普通事件)”六個(gè)級(jí)別,對(duì)應(yīng)圖3中的UNKNOWN、FATAL、ERROR、PROBLEM、EVENT、VERBOSE。具體實(shí)現(xiàn)時(shí),單擊復(fù)選框可自定義查看相應(yīng)級(jí)別的事件列表。例如只勾選“VERBOSE”,那么下面的表格里面就只顯示VERBOSE級(jí)別的事件,依靠這些數(shù)據(jù)就可以統(tǒng)計(jì)代 碼單位時(shí)間出錯(cuò)率等信息了。本實(shí)施例中所述該流程的錯(cuò)誤數(shù)量,即在該流程中各類錯(cuò)誤的出現(xiàn)數(shù)量,對(duì)應(yīng)圖3中的“出現(xiàn)錯(cuò)誤數(shù)量”。
實(shí)施例三:
在上述實(shí)施例的基礎(chǔ)上,本實(shí)施例繼續(xù)說明日志文件的分析方法,具體說明按流程對(duì)日志文件進(jìn)行分析的方法。
參照?qǐng)D5,示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種按流程對(duì)日志文件進(jìn)行分析的方法實(shí)施例的步驟流程圖,具體可以包括如下步驟:
步驟501,從日志文件開頭提取一行新的文字流。
需要說明的是,本實(shí)施例是為了清楚描述按流程對(duì)日志文件進(jìn)行分析的方法,因此將前述實(shí)施例中有關(guān)流程分析方法的部分提取出來進(jìn)行說明,對(duì)于流程分析方法與對(duì)象分析方法相同的部分,例如先建立數(shù)據(jù)庫,本實(shí)施例在此不做贅述,可以參照前述實(shí)施例中的相關(guān)內(nèi)容進(jìn)行理解。步驟501與前述實(shí)施例中的步驟202中從所述日志文件中依次按行提取待分析的文字流一致,可以參照對(duì)應(yīng)內(nèi)容進(jìn)行理解。
本實(shí)施例以實(shí)際的生產(chǎn)日志為例,對(duì)流程分析法進(jìn)行舉例說明。日志文件部分內(nèi)容如下:
2014-10-17 15:43:02.738APP EVENT LB:OperationalAttachedModule::do_PrepChamb start-AFE1
2014-10-17 15:43:02.739APP VERBOSE ProcessChamber:call_PrepareChamber.
2014-10-17 15:43:02.739APP VERBOSE/Control/Platform/LB/Vacuum/PC:PressureController:Entering isAtState(/Control/Platform/LB/Vacuum/PC/PCSeqs/VentSequence/OverVent).
本實(shí)施例中步驟501從日志文件開頭提取一行新的文字流,如下:
2014-10-17 15:43:02.738APP EVENT LB:OperationalAttachedModule::do_PrepChamb start-AFE1
步驟502,從所述文字流中查找與數(shù)據(jù)庫對(duì)應(yīng)的一級(jí)關(guān)鍵詞。
步驟502即在提取出的該行文字流中查找是否存在數(shù)據(jù)庫中的一級(jí)關(guān)鍵 詞,如果存在說明在該行文字流中能夠查找到所述一級(jí)關(guān)鍵詞,如果不存在說明該行文字流中不能查找到所述一級(jí)關(guān)鍵詞。步驟502與前述實(shí)施例中的步驟203中“將所述文字流與所述數(shù)據(jù)庫中的流程關(guān)鍵詞進(jìn)行匹配”一致,相關(guān)內(nèi)容可參見對(duì)應(yīng)實(shí)施例中的描述。本實(shí)施例中從步驟501提取到的文字流中尋找與數(shù)據(jù)庫對(duì)應(yīng)的“一級(jí)關(guān)鍵詞”。數(shù)據(jù)庫為事先建立好,里面記錄了所有標(biāo)志著重要流程開始結(jié)束的關(guān)鍵詞。
步驟503,當(dāng)從所述文字流中查找到與數(shù)據(jù)庫對(duì)應(yīng)的一級(jí)關(guān)鍵詞時(shí),標(biāo)記該一級(jí)關(guān)鍵詞,并統(tǒng)計(jì)該行文字流所包含的時(shí)間、錯(cuò)誤數(shù)量等信息。
當(dāng)從所述文字流中查找到與數(shù)據(jù)庫對(duì)應(yīng)的一級(jí)關(guān)鍵詞時(shí),說明在該行文字流中能夠查找到所述一級(jí)關(guān)鍵詞,此時(shí)標(biāo)記該一級(jí)關(guān)鍵詞,因?yàn)樗鲆患?jí)關(guān)鍵詞標(biāo)志流程開始或結(jié)束。
本實(shí)施例在步驟501提取出來的這行文字流中搜索到一級(jí)關(guān)鍵詞“do_PrepChamb start”,因?yàn)檫@個(gè)步驟開始意味著LoadLock B腔室開始抽真空了。所以把這個(gè)關(guān)鍵詞標(biāo)記下來,并且記錄這行文字包含的時(shí)間:2014-10-17 15:43:02.738,來源:APP,事件級(jí)別:EVENT,以及詳細(xì)內(nèi)容:LB:OperationalAttachedModule::do_PrepChamb start-AFE1,便于后來對(duì)該步驟時(shí)間、發(fā)生錯(cuò)誤數(shù)量的統(tǒng)計(jì)。那么這一行讀完了,開始繼續(xù)提取下一行文字流。
步驟504,當(dāng)從所述文字流中未查找到與數(shù)據(jù)庫對(duì)應(yīng)的一級(jí)關(guān)鍵詞時(shí),從所述文字流中查找與數(shù)據(jù)庫對(duì)應(yīng)的二級(jí)關(guān)鍵詞。
由于數(shù)據(jù)庫中包括一級(jí)關(guān)鍵詞和二級(jí)關(guān)鍵詞,所述一級(jí)關(guān)鍵詞標(biāo)志流程開始或結(jié)束,例如機(jī)械手的取片放片。所述二級(jí)關(guān)鍵詞標(biāo)志所述一級(jí)關(guān)鍵詞所屬流程中的子流程,例如進(jìn)PM之前的抽氣開閥動(dòng)作,因此當(dāng)從所述文字流中未查找到與數(shù)據(jù)庫對(duì)應(yīng)的一級(jí)關(guān)鍵詞時(shí),從所述文字流中查找與數(shù)據(jù)庫對(duì)應(yīng)的二級(jí)關(guān)鍵詞,通過二級(jí)關(guān)鍵詞也可以獲知該行文字流所屬的流程。
步驟505,當(dāng)從所述文字流中查找到與數(shù)據(jù)庫對(duì)應(yīng)的二級(jí)關(guān)鍵詞時(shí),標(biāo)記該二級(jí)關(guān)鍵詞。
如果本實(shí)施例中步驟501提取到的文字流如下:
2014-10-17 15:43:02.739APP VERBOSE ProcessChamber:call_PrepareChamber.
則該行文字流并沒有一級(jí)關(guān)鍵詞,因?yàn)樗囊馑际情_始調(diào)用代碼中的某一個(gè)功能函數(shù),屬于腔室抽真空的流程中的小步驟。所以繼續(xù)與數(shù)據(jù)庫中的二級(jí)關(guān)鍵詞對(duì)照,發(fā)現(xiàn)這句子中有,即“call_PrepareChamber”。這是進(jìn)入“準(zhǔn)備抽氣”的流程階段,在數(shù)據(jù)庫中標(biāo)記是屬于一級(jí)關(guān)鍵詞“do_PrepChambstart”的。所以把這句日志歸類在一級(jí)關(guān)鍵詞do_PrepChamb start(即“LB開始抽真空”)下。之所以要查找二級(jí)關(guān)鍵詞,是因?yàn)檫@是多線程的日志,按時(shí)間順序發(fā)生的兩個(gè)動(dòng)作不一定屬于一個(gè)重要流程。所以要根據(jù)數(shù)據(jù)庫中的關(guān)鍵詞歸屬來進(jìn)行分類。接下來的動(dòng)作也是如此,一行一行地讀入新的日志內(nèi)容,查找一級(jí)、二級(jí)關(guān)鍵詞,如果是一級(jí)關(guān)鍵詞,還要記錄其開始結(jié)束時(shí)間,及發(fā)生錯(cuò)誤數(shù)量等統(tǒng)計(jì)信息。
步驟506,按所屬流程分類存儲(chǔ)。
需要說明的是,當(dāng)從所述文字流中未查找到與數(shù)據(jù)庫對(duì)應(yīng)的二級(jí)關(guān)鍵詞時(shí),直接執(zhí)行步驟506按所屬流程分類存儲(chǔ),此時(shí)可以人工判斷該文字流屬于哪個(gè)流程。
步驟507,判斷日志文件是否遍歷結(jié)束。當(dāng)日志文件遍歷結(jié)束時(shí),執(zhí)行步驟508顯示流程列表與流程詳細(xì)列表,當(dāng)日志文件未遍歷結(jié)束時(shí),返回步驟501從日志文件開頭提取一行新的文字流。
步驟508,顯示流程列表與流程詳細(xì)列表。
如圖3所示,界面左側(cè)分析選項(xiàng)卡下的內(nèi)容為流程列表,點(diǎn)擊流程列表中的一個(gè)流程,相應(yīng)出現(xiàn)在界面右側(cè)部分的內(nèi)容即為流程詳細(xì)列表,流程詳細(xì)列表包括該流程下所有文字流的日期、時(shí)間、來源、事件級(jí)別、內(nèi)容等信息,還有統(tǒng)計(jì)得出的過程持續(xù)時(shí)間、出現(xiàn)錯(cuò)誤數(shù)量等內(nèi)容,方便程序員進(jìn)行定位、查詢和搜索,有利于提高發(fā)現(xiàn)系統(tǒng)存在問題的效率。
本實(shí)施例提供的按流程對(duì)日志文件進(jìn)行分析的方法,可以在按流程分析模塊中實(shí)現(xiàn),定義了兩類流程關(guān)鍵詞:一級(jí)關(guān)鍵詞和二級(jí)關(guān)鍵詞。一級(jí)關(guān)鍵詞為標(biāo)志進(jìn)出重要流程的關(guān)鍵字,例如機(jī)械手的取片放片。二級(jí)關(guān)鍵詞指重 要流程中的子流程,例如進(jìn)PM之前的抽氣開閥動(dòng)作。本分析系統(tǒng)從日志中按行提取,分析出一級(jí)、二級(jí)關(guān)鍵詞,再歸類顯示出來。可以針對(duì)多線程、多硬件(或多用戶)并行輸出的日志進(jìn)行智能分析,將日志文件按流程進(jìn)行分門別類地顯示,大大增加了日志文件的可閱讀性和查找效率。并且圖3所示的“分析”選項(xiàng)卡界面中中用戶能夠自由選擇級(jí)別查看事件,并且統(tǒng)計(jì)了本段流程的運(yùn)行時(shí)間和各類錯(cuò)誤的出現(xiàn)數(shù)量,提高了日志文件的可閱讀性和查找效率。
實(shí)施例四:
在上述實(shí)施例的基礎(chǔ)上,本實(shí)施例繼續(xù)說明日志文件的分析方法,具體說明按流程對(duì)日志文件進(jìn)行分析。
參照?qǐng)D6,示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種按對(duì)象對(duì)日志文件進(jìn)行分析的方法實(shí)施例的步驟流程圖,具體可以包括如下步驟:
步驟601,創(chuàng)建對(duì)象列表。
本實(shí)施例中步驟601與前述步驟201相對(duì)應(yīng),可以參見前述實(shí)施例中的說明。本實(shí)施例創(chuàng)建對(duì)象列表,即創(chuàng)建要顯示在如圖4所示界面左側(cè)的對(duì)象列表,從每行日志中可以檢索到對(duì)象名稱關(guān)鍵詞:LB、ProcessChamber、PressureController、GaugeSource等等,這些都是在系統(tǒng)中運(yùn)行的對(duì)象。讀取到了它們,在與對(duì)象數(shù)據(jù)庫對(duì)比后,加入到顯示的對(duì)象列表,然后把對(duì)應(yīng)的日志內(nèi)容都?xì)w類到所屬的硬件對(duì)象下。全部日志文件的文字流讀取完,那么每個(gè)對(duì)象所屬的日志內(nèi)容也就分析完畢了。在圖4所示的日志文件分析系統(tǒng)“對(duì)象”選項(xiàng)卡點(diǎn)擊后在左側(cè)選擇某個(gè)對(duì)象,屬于它的日志內(nèi)容就會(huì)顯示出來。
步驟602,從日志文件開頭提取一行新的文字流。
需要說明的是,本實(shí)施例是為了清楚描述按對(duì)象對(duì)日志文件進(jìn)行分析的方法,因此將前述實(shí)施例中有關(guān)流程分析方法的部分提取出來進(jìn)行說明,對(duì)于流程分析方法與對(duì)象分析方法相同的部分,例如先建立數(shù)據(jù)庫,本實(shí)施例在此不做贅述,可以參照前述實(shí)施例中的相關(guān)內(nèi)容進(jìn)行理解。步驟602與前述實(shí)施例中的步驟202中從所述日志文件中依次按行提取待分析的文字流一 致,可以參照對(duì)應(yīng)內(nèi)容進(jìn)行理解。
步驟603,從文字流中查找與對(duì)象列表對(duì)應(yīng)的對(duì)象名。
當(dāng)從文字流中查找到與對(duì)象列表對(duì)應(yīng)的對(duì)象名時(shí),執(zhí)行步驟604;當(dāng)從文字流中未查找到與對(duì)象列表對(duì)應(yīng)的對(duì)象名時(shí),執(zhí)行步驟605。需要說明的是,本實(shí)施例中的對(duì)象列表對(duì)應(yīng)前述實(shí)施例中的數(shù)據(jù)庫,對(duì)象名對(duì)應(yīng)前述實(shí)施例中的對(duì)象關(guān)鍵詞,可以參見前述實(shí)施例的相關(guān)描述進(jìn)行理解,本實(shí)施例在此不做贅述。
步驟604,當(dāng)從文字流中查找到與對(duì)象列表對(duì)應(yīng)的對(duì)象名時(shí),將該行文字流添加到相應(yīng)對(duì)象所屬日志。
本實(shí)施例中步驟604與前述實(shí)施例中步驟204中“根據(jù)匹配結(jié)果,將所述文字流歸類到其對(duì)應(yīng)的對(duì)象關(guān)鍵詞所屬的對(duì)象中”相對(duì)應(yīng),即當(dāng)匹配成功時(shí),將所述文字流歸類到其對(duì)應(yīng)的對(duì)象關(guān)鍵詞所屬的對(duì)象中,可以參見相關(guān)內(nèi)容進(jìn)行理解,本實(shí)施例在此不做贅述。
步驟605,當(dāng)從文字流中未查找到與對(duì)象列表對(duì)應(yīng)的對(duì)象名時(shí),創(chuàng)建新對(duì)象并添加到對(duì)象列表。
本實(shí)施例中步驟605與前述實(shí)施例中步驟204中“根據(jù)匹配結(jié)果,將所述文字流歸類到其對(duì)應(yīng)的對(duì)象關(guān)鍵詞所屬的對(duì)象中”相對(duì)應(yīng),即當(dāng)匹配失敗時(shí),將所述文字流歸類到所述新對(duì)象中,可以參見相關(guān)內(nèi)容進(jìn)行理解,本實(shí)施例在此不做贅述。
步驟606,判斷日志文件是否遍歷結(jié)束。當(dāng)日志文件遍歷結(jié)束時(shí),執(zhí)行步驟607顯示對(duì)象列表與對(duì)象所屬動(dòng)作詳細(xì)列表,當(dāng)日志文件未遍歷結(jié)束時(shí),返回步驟602從日志文件開頭提取一行新的文字流。
步驟607,顯示對(duì)象列表與對(duì)象所屬動(dòng)作詳細(xì)列表。
如圖4所示,界面左側(cè)對(duì)象選項(xiàng)卡下的內(nèi)容為對(duì)象列表,點(diǎn)擊對(duì)象列表中的一個(gè)對(duì)象,相應(yīng)出現(xiàn)在界面右側(cè)部分的內(nèi)容即為對(duì)象所屬動(dòng)作詳細(xì)列表,對(duì)象所屬動(dòng)作詳細(xì)列表包括該流程下所有文字流的日期、時(shí)間、來源、事件級(jí)別、內(nèi)容等信息,可以依據(jù)硬件對(duì)象直接進(jìn)行定位,提高了日志文件的搜索和分析效率,有利于程序員快速定位系統(tǒng)中的問題,節(jié)省了大量人力 物力和時(shí)間。
本實(shí)施例提供的按對(duì)象對(duì)日志文件進(jìn)行分析的方法,可以在按對(duì)象分析模塊中實(shí)現(xiàn),會(huì)根據(jù)實(shí)際硬件情況創(chuàng)建一個(gè)對(duì)象列表,然后按行分析日志文件,屬于哪個(gè)對(duì)象即歸類到那個(gè)對(duì)象所屬的內(nèi)容中,可以依據(jù)硬件對(duì)象直接進(jìn)行定位,提高了日志文件的搜索和分析效率,有利于程序員快速定位系統(tǒng)中的問題,節(jié)省了大量人力物力和時(shí)間。
對(duì)于前述的各方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。
實(shí)施例五:
在上述實(shí)施例的基礎(chǔ)上,本實(shí)施例還公開了一種日志文件的分析系統(tǒng)。
參照?qǐng)D7,示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種日志文件的分析系統(tǒng)實(shí)施例的結(jié)構(gòu)框圖,具體可以包括:數(shù)據(jù)庫建立模塊701、提取模塊702、匹配模塊703、歸類模塊704和存儲(chǔ)模塊705,其中,
數(shù)據(jù)庫建立模塊701,用于建立數(shù)據(jù)庫,所述數(shù)據(jù)庫包括流程關(guān)鍵詞和/或?qū)ο箨P(guān)鍵詞。
提取模塊702,用于接收待分析的日志文件,從所述日志文件中依次按行提取待分析的文字流。
匹配模塊703,用于將所述文字流與所述數(shù)據(jù)庫中的流程關(guān)鍵詞或?qū)ο箨P(guān)鍵詞進(jìn)行匹配。
歸類模塊704,用于根據(jù)匹配結(jié)果,將所述文字流歸類到其對(duì)應(yīng)的流程關(guān)鍵詞所屬的流程或?qū)ο箨P(guān)鍵詞所屬的對(duì)象中。
存儲(chǔ)模塊705,用于將所述文字流按照其所屬的流程或?qū)ο蠓诸惔鎯?chǔ)。
本實(shí)施例通過首先通過數(shù)據(jù)庫建立模塊701建立數(shù)據(jù)庫,所述數(shù)據(jù)庫包括流程關(guān)鍵詞和/或?qū)ο箨P(guān)鍵詞;其次提取模塊702接收待分析的日志文件, 從所述日志文件中依次按行提取待分析的文字流;再次匹配模塊703將所述文字流與所述數(shù)據(jù)庫中的流程關(guān)鍵詞或?qū)ο箨P(guān)鍵詞進(jìn)行匹配;復(fù)次歸類模塊704根據(jù)匹配結(jié)果,將所述文字流歸類到其對(duì)應(yīng)的流程關(guān)鍵詞所屬的流程或?qū)ο箨P(guān)鍵詞所屬的對(duì)象中;最后存儲(chǔ)模塊705將所述文字流按照其所屬的流程或?qū)ο蠓诸惔鎯?chǔ),實(shí)現(xiàn)了對(duì)日志文件的智能分析,能夠智能地分解多線程日志的繁雜內(nèi)容,將日志文件按系統(tǒng)動(dòng)作分割為若干流程或?qū)ο?,將所述文字流按照其所屬的流程或?qū)ο蠓诸惔鎯?chǔ),大大增加了日志文件的可閱讀性和查找效率,方便程序員進(jìn)行閱讀、搜索。
在本發(fā)明如圖8所示的可選實(shí)施例中,所述日志文件的分析系統(tǒng)還包括:判斷顯示模塊706,用于所述存儲(chǔ)模塊將所述文字流按照其所屬的流程或?qū)ο蠓诸惔鎯?chǔ)之后,判斷所述日志文件中是否包含待分析的文字流;當(dāng)所述日志文件中包含待分析的文字流時(shí),返回所述提取模塊從所述日志文件中依次按行提取待分析的文字流;當(dāng)所述日志文件中未包含待分析的文字流時(shí),以所述流程或?qū)ο鬄閱挝伙@示所述日志文件,并結(jié)束對(duì)所述日志文件的分析。
在本發(fā)明的一種可選實(shí)施例中,所述流程關(guān)鍵詞包括一級(jí)關(guān)鍵詞和二級(jí)關(guān)鍵詞,所述一級(jí)關(guān)鍵詞標(biāo)志流程開始或結(jié)束,所述二級(jí)關(guān)鍵詞標(biāo)志所述一級(jí)關(guān)鍵詞所屬流程中的子流程;所述匹配模塊包括流程匹配子模塊;所述流程匹配子模塊,用于從所述文字流中查找與數(shù)據(jù)庫對(duì)應(yīng)的所述一級(jí)關(guān)鍵詞;當(dāng)從所述文字流中查找到與數(shù)據(jù)庫對(duì)應(yīng)的一級(jí)關(guān)鍵詞時(shí),匹配成功,標(biāo)記該一級(jí)關(guān)鍵詞;當(dāng)從所述文字流中未查找到與數(shù)據(jù)庫對(duì)應(yīng)的一級(jí)關(guān)鍵詞時(shí),從所述文字流中查找與數(shù)據(jù)庫對(duì)應(yīng)的所述二級(jí)關(guān)鍵詞;當(dāng)從所述文字流中查找到與數(shù)據(jù)庫對(duì)應(yīng)的二級(jí)關(guān)鍵詞時(shí),匹配成功,標(biāo)記該二級(jí)關(guān)鍵詞。
在本發(fā)明的一種可選實(shí)施例中,所述歸類模塊包括流程歸類子模塊;所述流程歸類子模塊用于當(dāng)所述文字流中標(biāo)記有一級(jí)關(guān)鍵詞時(shí),將所述文字流歸類到所述一級(jí)關(guān)鍵詞標(biāo)志的流程中;當(dāng)所述文字流中未標(biāo)記有一級(jí)關(guān)鍵詞但標(biāo)記有二級(jí)關(guān)鍵詞時(shí),將所述文字流歸類到所述二級(jí)關(guān)鍵詞標(biāo)志的子流程所對(duì)應(yīng)的流程中。
在本發(fā)明的一種可選實(shí)施例中,所述存儲(chǔ)模塊包括流程存儲(chǔ)子模塊;所 述流程存儲(chǔ)子模塊,用于將所述文字流所屬的流程存儲(chǔ)為流程列表;將所述文字流存儲(chǔ)為所述流程列表中對(duì)應(yīng)的流程信息。
在本發(fā)明的一種可選實(shí)施例中,所述匹配模塊包括對(duì)象匹配子模塊;所述對(duì)象匹配子模塊,用于從所述文字流中查找與數(shù)據(jù)庫對(duì)應(yīng)的所述對(duì)象關(guān)鍵詞;當(dāng)從所述文字流中查找到與數(shù)據(jù)庫對(duì)應(yīng)的對(duì)象關(guān)鍵詞時(shí),匹配成功;當(dāng)從所述文字流中未查找到與數(shù)據(jù)庫對(duì)應(yīng)的對(duì)象關(guān)鍵詞時(shí),匹配失敗,根據(jù)所述文字流創(chuàng)建新對(duì)象并添加到所述數(shù)據(jù)庫中。
在本發(fā)明的一種可選實(shí)施例中,所述歸類模塊包括對(duì)象歸類子模塊;所述對(duì)象歸類子模塊,用于當(dāng)匹配成功時(shí),將所述文字流歸類到其對(duì)應(yīng)的對(duì)象關(guān)鍵詞所屬的對(duì)象中;當(dāng)匹配失敗時(shí),將所述文字流歸類到所述新對(duì)象中。
在本發(fā)明的一種可選實(shí)施例中,所述存儲(chǔ)模塊包括對(duì)象存儲(chǔ)子模塊;所述對(duì)象存儲(chǔ)子模塊,用于將所述文字流所屬的對(duì)象存儲(chǔ)為對(duì)象列表;將所述文字流存儲(chǔ)為所述對(duì)象列表中對(duì)應(yīng)的對(duì)象信息。
在本發(fā)明如圖9所示的一種可選實(shí)施例中,所述日志文件的分析系統(tǒng)還包括:統(tǒng)計(jì)模塊707,用于統(tǒng)計(jì)所述文字流的運(yùn)行時(shí)間、事件個(gè)數(shù)和對(duì)應(yīng)的事件級(jí)別;將同一流程下各文字流的運(yùn)行時(shí)間相加,和作為該流程的持續(xù)時(shí)間;根據(jù)同一流程下各文字流的事件個(gè)數(shù)和對(duì)應(yīng)的事件級(jí)別,統(tǒng)計(jì)得到該流程的錯(cuò)誤數(shù)量。
對(duì)于系統(tǒng)實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說明即可。
本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。
本發(fā)明可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本發(fā)明,在這些分布式計(jì)算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連 接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。
以上對(duì)本發(fā)明所提供的一種日志文件的分析方法和系統(tǒng),進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。