一種日志解析方法及裝置的制造方法
【專利摘要】本發(fā)明公開了一種日志解析方法及裝置,在本發(fā)明實施例所述技術(shù)方案中,由于模板元素集合中包括多個模板元素,每個模板元素中包括字段輸出名、該字段輸出名對應的至少一個字符串信息的各自的正則表達式信息、以及字符串信息的預置輸出數(shù)據(jù)類型;用戶可以從模板元素集合中選擇至少一個預置模板元素構(gòu)成解析模板,而對待解析日志的解析是根據(jù)解析模板解析的,解析模板是用戶可以根據(jù)模板元素集合隨意配置的,所以本發(fā)明實施例提供的日志解析方法,無需為特定數(shù)據(jù)格式的待解析日志開發(fā)并維護日志解析應用程序,故此,能夠適用任意數(shù)據(jù)格式的字符串待解析日志,也能夠提高日志解析應用程序的開發(fā)效率,并降低維護工作量。
【專利說明】
一種日志解析方法及裝置
技術(shù)領域
[0001 ]本發(fā)明涉及日志分析領域,尤其涉及一種日志解析方法及裝置。
【背景技術(shù)】
[0002] 隨著海量日志分析挖掘技術(shù)的發(fā)展,如何解析設備或系統(tǒng)的日志備受業(yè)界重視。 日志解析的目的,是將待解析日志(即原始日志)中的數(shù)據(jù)通過某種邏輯組織成格式化的數(shù) 據(jù)交換格式,以便于提供給下游系統(tǒng)進行分析和挖掘。
[0003] 目前,字符串日志,具有體積小、易壓縮、更便于網(wǎng)絡傳輸?shù)膬?yōu)勢,但是在帶來諸多 優(yōu)勢的同事,也給日志解析帶來很多不便。
[0004] 由于待解析日志的數(shù)據(jù)格式多種多樣,現(xiàn)有的日志解析方法中,一般針對一種數(shù) 據(jù)格式的待解析日志開發(fā)一套對應的日志解析應用程序。由此,現(xiàn)有技術(shù)存在以下缺陷:
[0005] 1 )、一個日志解析應用程序只能解析對應的數(shù)據(jù)格式的待解析日志,而且每個解 析應用程序都需要維護,導致維護工作量大。
[0006] 2)、當待解析日志的數(shù)據(jù)格式改變時,需要開發(fā)人員重新開發(fā)日志解析應用程序。
[0007] 3)、當出現(xiàn)新的數(shù)據(jù)格式的待解析日志時,需要開發(fā)新的日志解析應用程序。
[0008]故此,現(xiàn)有的日志解析方法適用范圍小,日志解析應用程序的開發(fā)效率低,周期 長,維護工作量大。
【發(fā)明內(nèi)容】
[0009] 本發(fā)明實施例提供了一種日志解析方法及裝置,用以解決目前存在的由于每種數(shù) 據(jù)格式的待解析日志對應一種日志解析應用程序,使得無現(xiàn)有的日志解析方法適用范圍 小,日志解析應用程序的開發(fā)效率低,周期長,維護工作量大等的問題。
[0010] 本發(fā)明實施例提供了一種日志解析方法,包括:
[0011] 獲取解析模板;其中,解析模板中包括解析后的預置數(shù)據(jù)交換格式以及從模板元 素集合中選擇的至少一個預置模板元素;每個預置模板元素中包括字段輸出名、該字段輸 出名對應的至少一個字符串信息的各自的正則表達式信息、以及字符串信息的預置輸出數(shù) 據(jù)類型;
[0012] 針對每個預置模板元素中的每個正則表達式信息,從待解析日志中提取與該正則 表達式信息匹配的字符串信息;并將匹配的字符串信息配置為預置輸出數(shù)據(jù)類型;
[0013] 按照預置數(shù)據(jù)交換格式,輸出解析模板中的每個預置模板元素的字段輸出名以及 每個字段輸出名對應的字符串信息。
[0014] 進一步地,本發(fā)明實施例還提供了一種日志解析裝置,包括:
[0015] 解析模板獲取模塊,用于獲取解析模板;其中,解析模板中包括解析后的預置數(shù)據(jù) 交換格式以及從模板元素集合中選擇的至少一個預置模板元素;每個預置模板元素中包括 字段輸出名、該字段輸出名對應的至少一個字符串信息的各自的正則表達式信息、以及字 符串信息的預置輸出數(shù)據(jù)類型;
[0016] 解析模塊,用于針對每個預置模板元素中的每個正則表達式信息,從待解析日志 中提取與該正則表達式信息匹配的字符串信息;并將匹配的字符串信息配置為預置輸出數(shù) 據(jù)類型;
[0017] 輸出模塊,用于按照預置數(shù)據(jù)交換格式,輸出解析模板中的每個預置模板元素的 字段輸出名以及每個字段輸出名對應的字符串信息。
[0018] 本發(fā)明有益效果如下:在本發(fā)明實施例所述技術(shù)方案中,由于模板元素集合中包 括多個模板元素,每個模板元素中包括字段輸出名、該字段輸出名對應的至少一個字符串 信息的各自的正則表達式信息、以及字符串信息的預置輸出數(shù)據(jù)類型;用戶可以從模板元 素集合中選擇的至少一個預置模板元素構(gòu)成解析模板,而對待解析日志的解析是根據(jù)解析 模板解析的,解析模板是用戶可以根據(jù)模板元素集合隨意配置的,所以本發(fā)明實施例提供 的日志解析方法,無需為特定數(shù)據(jù)格式的待解析日志開發(fā)并維護日志解析應用程序,故此, 能夠適用任意數(shù)據(jù)格式的待解析日志,也能夠提高日志解析應用程序的開發(fā)效率,并降低 維護工作量。
【附圖說明】
[0019] 為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使 用的附圖作簡要介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本 領域的普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他 的附圖。
[0020] 圖1所示為本發(fā)明實施例一中所述日志解析方法的流程示意圖;
[0021 ]圖2所示為本發(fā)明實施例一中所述模板元素的示意圖;
[0022] 圖3所示為本發(fā)明實施例一中所述解析模板的示意圖;
[0023] 圖4所示為本發(fā)明實施例一中所述字段模板的示意圖;
[0024] 圖5所示為本發(fā)明實施例二中所述日志解析裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0025] 本發(fā)明實施例提供了一種日志解析方法及裝置,適用于字符串日志。在本發(fā)明實 施例所述技術(shù)方案中,由于模板元素集合中包括多個模板元素,每個模板元素中包括字段 輸出名、該字段輸出名對應的至少一個字符串信息的各自的正則表達式信息、以及字符串 信息的預置輸出數(shù)據(jù)類型;用戶可以從模板元素集合中選擇的至少一個預置模板元素構(gòu)成 解析模板,而對待解析日志的解析是根據(jù)解析模板解析的,解析模板是用戶可以根據(jù)模板 元素集合隨意配置的,所以本發(fā)明實施例提供的日志解析方法,無需為特定數(shù)據(jù)格式的待 解析日志開發(fā)并維護日志解析應用程序,故此,能夠適用任意數(shù)據(jù)格式的字符串類型待解 析日志,也能夠提高日志解析應用程序的開發(fā)效率,并降低維護工作量。
[0026] 為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明作進 一步地詳細描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施 例?;诒景l(fā)明中的實施例,本領域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的 所有其它實施例,都屬于本發(fā)明保護的范圍。
[0027] 實施例一:
[0028] 如圖1所示,其為本發(fā)明實施例一中所述日志解析方法的流程示意圖,所述日志解 析方法可包括以下步驟:
[0029] 步驟101:獲取解析模板;其中,解析模板中包括解析后的預置數(shù)據(jù)交換格式以及 從模板元素集合中選擇的至少一個預置模板元素;每個預置模板元素中包括字段輸出名、 該字段輸出名對應的至少一個字符串信息的各自的正則表達式信息、以及字符串信息的預 置輸出數(shù)據(jù)類型。
[0030] 其中,在一個實施例中,預置數(shù)據(jù)交換格式例如是XML(Extensible Markup Language,可擴展標記語言)、JS0N( JavaScript Ob ject Notation JavaScript對象表不 法)、YAML(Yet Another Markup Language,另一種標記語言)等中的其中一種。需要說明的 是,任何預置數(shù)據(jù)交換格式均適用于本發(fā)明實施例,本發(fā)明對此不做限定。
[0031]其中,在一個實施例中,預置輸出數(shù)據(jù)類型例如是以下中的任一種:int(Integer, 整數(shù)類型)、String(字符串)、long(整型)、boolean(布爾型)、f loat(浮點型)、double(雙精 度浮點型)、date(日期型)等。
[0032]其中,在一個實施例中正則表達式信息可以是一個具體的正則表達式,也可以是 正則表達式的標識,具體實施時,可以根據(jù)實際需要設定,本發(fā)明實施例對此不做限定。
[0033]其中,在一個實施例中,模板元素集合的存儲形式可以是數(shù)據(jù)庫也可以是文件,本 發(fā)明對此不做限定。
[0034]步驟102:針對每個預置模板元素中的每個正則表達式信息,從待解析日志中提取 與該正則表達式信息匹配的字符串信息;并將匹配的字符串信息配置為預置輸出數(shù)據(jù)類 型。
[0035]步驟103:按照預置數(shù)據(jù)交換格式,輸出解析模板中的每個預置模板元素的字段輸 出名以及每個字段輸出名對應的字符串信息。
[0036]為便于理解,下面對本發(fā)明實施例提供的日志解析方法進行進一步地說明,具體 的,包括以下內(nèi)容:
[0037] 1)、關(guān)于模板元素與解析模板:
[0038] 其中,在一個實施例中,可以通過預先定義字段模板,每個字段模板均有對應的正 則表達式,該正則表達式可用于提取待解析日志中的字符串信息。故此,本發(fā)明實施例中為 便于配置解析模板,正則表達式信息為字段模板名;針對任一預置模板元素,根據(jù)以下方法 配置該預置模板元素,包括步驟A1-步驟A4:
[0039] 步驟A1:接收對字段模板集合中的至少一個字段模板名的選擇指令;其中,每個字 段模板名對應一個字段模板,每個字段模板均有對應的正則表達式。
[0040] 其中,在一個實施例中,字段模板集合的存儲形式可以是數(shù)據(jù)庫也可以是文件,本 發(fā)明對此不做限定。
[0041] 步驟A2:將選擇的字段模板名對應的字段模板作為預置字段模板,并接收針對預 置模板元素的字段輸出名的命名指令。
[0042] 步驟A3:接收對輸出數(shù)據(jù)類型的設定指令。
[0043] 其中,在一個實施例中步驟A2與步驟A3的執(zhí)行順序不受限。
[0044] 步驟A4:根據(jù)命名指令中包括的字段輸出名、設定指令中包括的預置輸出數(shù)據(jù)類 型以及預置字段模板,生成預置模板元素。
[0045] 為便于理解,這里舉例對步驟A1-步驟A4進行說明:假設字段模板集合如表1所示。 其中,需要說明的是表1僅用來說明本發(fā)明實施例,并不用于限定本發(fā)明實施例,具體實施 時,可以根據(jù)實際需要設計字段模板集合,本發(fā)明實施例對此并不限定。
[0046] 表1字段模板集合示例
[0048]若選擇的字段模板名為Ml和M2,則字段模板Ml、M2均為預置模板元素的預置字段 模板。若命名指令中包括的字段輸出名為U,設定指令中包括的輸出數(shù)據(jù)類型為String,則 最終的生成的預置模板元素可以表示為如圖2所示:在圖2中201表示字段模板分割符,用于 區(qū)分出不同的字段模板名;202表示字段輸出名標識符,用于識別出字段輸出名;203表示預 置輸出數(shù)據(jù)類型標識符,用于識別出預置輸出數(shù)據(jù)類型。具體實施時,201可用";"表示;202 可用":"表示;203可用表示,則預置模板元素U可表示為:
[0049] Ml;M2:U;String
[0050]具體識別時,可以根據(jù)各符號以及該符號出現(xiàn)的位置識別出預置模板元素中的字 段模板名、字段輸出名以及預置輸出數(shù)據(jù)類型。例如,預置模板元素U中":"前面的";"均為 字段模板分割符;":"后面的為預置輸出數(shù)據(jù)類型。
[0051]需要說明的是,一個模板元素中可以包括一個字段模板,也可以包括兩個或兩個 以上的字段模板,本發(fā)明實施例對此不做限定。
[0052]有了模板元素之后,即可以配置解析模板,解析模板中可包括至少一個預置模板 元素。當解析模板中包括多個預置模板元素時,為了便于識別出各預置模板元素,本發(fā)明實 施例中解析模板中包括模板元素起始符和模板元素分割符。則解析模板的示意圖可以如圖 3所示:其中,301表示模板元素起始符用于區(qū)分出預置數(shù)據(jù)交換格式以及模板元素;302表 示模板元素分割符,用于當解析模板中包括多個預置模板元素時,區(qū)分出各模板元素;U1表 示一個預置模板元素,U2表示另一個預置模板元素。具體實施時,可以用"〈>"表示模板元素 起始符;用"%"表示模板元素分割符,若預置數(shù)據(jù)交換格式為JS0N,則圖3所示的解析模板 可表示為:
[0053] output_format: json<%Ul %U2>
[0054]其中,在一個實施例中,解析模板包括的預置模板元素,可以用預置模板元素的標 識表示(例如將預置模板元素命名為U1,U1則為預置模板元素的標識),也可以用預置模板 元素(例如上例中的Ml ;M2:U;String)表示。
[0055] 2)、關(guān)于字段模板
[0056] 其中,在一個實施例中為了便于用戶通過自動模板設置出解析模板,本發(fā)明實施 例中,字段模板集合中的字段模板可以根據(jù)用戶需求配置。故此,本發(fā)明實施例中還包括以 下修改字段模板集合的方法,具體可執(zhí)行為:接收對字段模板集合的編輯指令,所述編輯指 令包括以下中的任一種:刪除字段模板集合中第一指定字段模板的刪除指令、向字段模板 集合中添加字段模板的添加指令、修改字段模板集合中第二指定字段模板的修改指令。
[0057]其中,在一個實施例中,為便于用戶根據(jù)已有的字段模板生成新的字段模板對應 的正則表達式,本發(fā)明實施例中新的字段模板還可以嵌套至少一個已有的字段模板,以使 新的字段模板的正則表達式為其嵌套的至少一個已有的字段模板的正則表達式的集合。 [0058]為便于理解,這里舉例說明,例如如圖4所示為字段模板的示意圖:401表示字段模 板名與其對應的正則表達式的分割符,用于區(qū)分出字段模板名和其對應的正則表達式。具 體實施時401可以為空格符。則字段模板的表達形式可以為:
[0059]字段模版名[空格符]正則表達式
[0060] 例如名稱為DATA的字段模板,其正則表達式若為(表示與任意字符串匹配), 則該字段模板可以表示為:
[0061] DATA.*?
[0062]若新的字段模板(字段模板名記為F0US)需要嵌套名稱為DATA的字段模板,則新的 字段模板F0US可表不為:
[0063] F0US"%{DATA}"
[0064]其中,F(xiàn)0US表示新的字段模板名,DATA表示已有的字段模板的字段模板名。若需要 嵌套多個已有的字段模板,則同上面所述的原理,添加字段模板分割符以區(qū)分開嵌套的各 字段模板即可,在此不再贅述。
[0065] 3)、關(guān)于日志解析
[0066] 通過上述第1)以及第2)部分的說明,本發(fā)明實施例中為了便于快速的進行日志解 析,在所述獲取待解析日志的解析模板之后,可以執(zhí)行以下步驟:
[0067] 步驟B1:提取解析模板中的每個預置模板元素包括的字段輸出名,生成字段輸出 名集合;并,提取每個預置模板元素包括的預置輸出數(shù)據(jù)類型,生成預置輸出數(shù)據(jù)類型集 合。
[0068] 步驟B2:提取解析模板中的每個預置模板元素包括的每個字段模板名,生成字段 模板名集合;并建立字段模板名、預置輸出數(shù)據(jù)類型以及字段輸出名三者之間的三維對應 關(guān)系。
[0069]其中,步驟B1與步驟B2的執(zhí)行順序可以不受限。
[0070]其中,在一個實施例中個,三維對應關(guān)系可以包括以下兩種方式:
[0071]方式一,建立三維對應關(guān)系表:上述三個集合(包括字段輸出名集合、預置輸出數(shù) 據(jù)類型集合以及字段模板名集合)作為上述集合之外的信息,也可以包含在上述集合中。
[0072] 方式二、可以使屬于同一預置模板元素的字段輸出名,預置輸出數(shù)據(jù)類型和字段 模板名具有相同的關(guān)系標識,上述三個集合的元素中具有相同關(guān)系標識的元素具有對應關(guān) 系。
[0073] 例如,若不同預置模板元素的字段輸出名不同,那么該關(guān)系標識便可以是字段輸 出名;當然具體實施時也可以為每一個預置模板元素分配一個唯一的序號,那么字段輸出 名集合中各字段輸出名均與對應的序號關(guān)聯(lián)存儲,同理,預置輸出數(shù)據(jù)類型集合中的各預 置輸出數(shù)據(jù)類型與對應的序號關(guān)聯(lián)存儲;字段模板名集合中各字段模板名與對應的序號關(guān) 聯(lián)存儲。舉例來說,若解析模板中有兩個預置模板元素,為其中一個預置模板元素分配序號 1,另一個預置模板元素分配序號2。若假設:序號為1的預置模板元素包括的字段輸出名為 U1,預置輸出數(shù)據(jù)類型為int(假設用type_0表示int)、字段模板名包括ID(IDentity,身份 標識號碼)分別為0和1的兩個;序號為2的預置模板元素包括的字段輸出名為U2,預置輸出 數(shù)據(jù)類型為string(假設用type_l表示string、字段模板名包括10(1〇6111:;^7,身份標識號 碼)分別為2和3的兩個。那么字段輸出名集合可表示為:
[0074] (1,2)
[0075] 其中1表示序號為1的預置模板元素,2表示序號為2的預置模板元素。
[0076] 預置輸出數(shù)據(jù)類型集合可表示為:
[0077] (l_type_0,2_type_l)
[0078]其中,l_type_0表示序號為1的預置模板元素的預置輸出數(shù)據(jù)類型為type_0,2_ type_l表示序號為2的預置模板元素的預置輸出數(shù)據(jù)類型為type_l。
[0079]字段模板名集合可表示為:
[0080] (1_ID_0,1_ID_1,2_ID_2,2_ID_3)
[0081]其中,1_ID_0表示ID為0的字段模板名屬于序號為1的預置模板元素;同理,1_ID_1 表示ID為1的字段模板名屬于序號為1的預置模板元素;2_ID_2表示ID為2的字段模板名屬 于序號為2的預置模板元素;2_ID_3表示ID為3的字段模板名屬于序號為2的預置模板元素。
[0082] 由上述例子可知,對于ID為0的字段模板名其對應的預置輸出數(shù)據(jù)類型,便為包含 序號1的預置輸出數(shù)據(jù)類型,這樣通過一個序號便可以建立三維對應關(guān)系。
[0083] 當然,由于字段輸出名與預置輸出數(shù)據(jù)類型為一一對應關(guān)系,本發(fā)明實施例中還 可以不添加關(guān)系標識,而僅憑在集合中排序建立三維對應關(guān)系,由于一個預置模板元素可 能包括至少一個字段模板名,那么字段模板名中集合中的元素可以是多維元素。例如(ID_ 〇, ID j)為字段模板名中的一個元素,這個元素的含義是該元素中包括ID分別為0和1的兩 個字段模板名。這樣,僅憑在集合中的排序位置,可以確定三維對應關(guān)系。例如,針對一個預 置模板元素,其字段輸出名位于字段輸出名集合的第一位,則相應的其預置輸出數(shù)據(jù)類型 位于預置輸出數(shù)據(jù)類型集合的第一位,其包含的所有字幕模板名組成一個元素位于字段模 板名集合的第一位。這樣,三個集合中位于相同排序位置的元素屬于同一預置模板元素,便 有了三維對應關(guān)系。
[0084] 需要說明的是,任何能夠表示本發(fā)明實施例所述三維對應關(guān)系的現(xiàn)有技術(shù)的方法 均適用于本發(fā)明實施例,本發(fā)明對此不做限定。
[0085] 有了上述三維對應關(guān)系后,步驟102可以具體包括以下步驟:
[0086] 步驟C1:遍歷字段模板名集合中的每個字段模板,根據(jù)每個字段模板對應的正則 表達式從待解析日志中提取與該正則表達式匹配的字符串信息。
[0087] 步驟C2:針對提取的每個字符串信息,根據(jù)三維對應關(guān)系,確定該字符串信息對應 的字段模板對應的預置輸出數(shù)據(jù)類型,并將該字符串信息的數(shù)據(jù)類型配置為確定的預置輸 出數(shù)據(jù)類型。
[0088] 由此,在執(zhí)行步驟103之前,還可以根據(jù)以下方法確定每個字段輸出名對應的字符 串信息,具體的:根據(jù)三維對應關(guān)系,確定字段輸出名集合中的每個字段輸出名對應的字符 串fg息。
[0089]日志解析前,會根據(jù)使用者解析模版的配置生成并緩存上述三個集合及三維對應 關(guān)系,避免在解析每條或者每批日志時都要重新組織三維對應關(guān)系,通過犧牲了少量的臨 時存儲空間來換取日志解析效率的整體提升,特別適用于當前大數(shù)據(jù)日志的解析處理。
[0090]其中,在一個實施例中,一種解析模板不能適用于所有的日志,所以具體實施時可 以根據(jù)實際需要配置不同的解析模板。那么,針對一特定解析模板,若待解析日志并不適用 這一解析模板,那么日志解析處理將是無用功,這將浪費處理資源。故此,本發(fā)明實施例中, 為了節(jié)約處理資源,本發(fā)明實施例中獲取解析模板之后,還可以判斷待解析日志與解析模 板是否匹配,若匹配則繼續(xù)執(zhí)行步驟102。其中,判斷待解析日志與解析模板是否匹配的方 法可以包括以下中的任一方法:
[0091 ]方法一,可以為每一個解析模板分配一個ID,在生成日志時,在日志中添加使用的 解析模板ID,這樣,獲取待解析日志后可以判斷待解析日志與解析模板的解析模板ID是否 相同,若相同,則確定待解析日志與解析模板匹配;否則不匹配。
[0092]方法二,可以在生成字段模板名集合之后,包括以下步驟:
[0093]步驟D1:根據(jù)字段模板名集合中的至少一個字段模板各自對應的正則表達式,生 成日志檢測正則表達式。
[0094] 步驟D2:檢測待處理日志與日志檢測正則表達式是否匹配。
[0095]步驟D3:若匹配,則確定待解析日志與解析模板匹配。
[0096] 其中,可以從字段模板名集合中選擇預設數(shù)量的字段模板名,由選擇的字段模板 名對應的字段模板的正則表達式組成正則表達式集合作為日志檢測正則表達式。例如,選 擇10個字段模板,則日志檢測正則表達式為這10個字段模板的正則表達式集合,當待解析 日志與這10個字段模板的正則表達式集合匹配時則確定待解析日志與解析模板匹配。其中 的預設數(shù)量可以為比例(例如50%,表示選擇字段模板名集合中50%的字段模板名),當然 預設數(shù)量越多則判斷待解析日志與解析模板是否匹配的準確性越高。
[0097] 其中,為了提高判斷的效率,本發(fā)明實施例中,還可以預先獲取解析模板使用的至 少一個日志。然后,針對每個日志,步驟D1可執(zhí)行為:將該日志中與解析模板中每個字段模 板的正則表達式匹配的字符串信息替換成表示與任何字符串匹配的正則表達式,由此生成 日志檢測正則表達式。例如,若日志內(nèi)容為:abed;其中,解析模板中共包括兩個字段模板, 一個字段模板的正則表示式與a匹配,另一個自動模板的正則表達式與d匹配。則將日志中 的a和d均替換為與任何字符串匹配的正則表達式(即.*?),最終得到的日志檢測正則表達 式為:.*?bc.*?。后續(xù)進行日志解析時,若待解析日志與該日志檢測正則表達式匹配,則確 定待解析日志與解析模板匹配,之后可以繼續(xù)執(zhí)行步驟102。
[0098] 綜上,本發(fā)明實施例中,由于模板元素集合中包括多個模板元素,每個模板元素中 包括字段輸出名、該字段輸出名對應的至少一個字符串信息的各自的正則表達式信息、以 及字符串信息的預置輸出數(shù)據(jù)類型;用戶可以從模板元素集合中選擇的至少一個預置模板 元素構(gòu)成解析模板,而對待解析日志的解析是根據(jù)解析模板解析的,解析模板是用戶可以 根據(jù)模板元素集合隨意配置的,所以本發(fā)明實施例提供的日志解析方法,無需為特定數(shù)據(jù) 格式的待解析日志開發(fā)并維護日志解析應用程序,故此,能夠適用任意數(shù)據(jù)格式的待解析 日志,也能夠提高日志解析應用程序的開發(fā)效率,并降低維護工作量。
[0099] 實施例二
[0100] 基于相同的發(fā)明構(gòu)思,本發(fā)明實施例還提供一種日志解析裝置,如圖5所示,為該 裝置的結(jié)構(gòu)示意圖,包括:
[0101] 解析模板獲取模塊501,用于獲取解析模板;其中,解析模板中包括解析后的預置 數(shù)據(jù)交換格式以及從模板元素集合中選擇的至少一個預置模板元素;每個預置模板元素中 包括字段輸出名、該字段輸出名對應的至少一個字符串信息的各自的正則表達式信息、以 及字符串信息的預置輸出數(shù)據(jù)類型;
[0102] 解析模塊502,用于針對每個預置模板元素中的每個正則表達式信息,從待解析日 志中提取與該正則表達式信息匹配的字符串信息;并將匹配的字符串信息配置為預置輸出 數(shù)據(jù)類型;
[0103] 輸出模塊503,用于按照預置數(shù)據(jù)交換格式,輸出解析模板中的每個預置模板元素 的字段輸出名以及每個字段輸出名對應的字符串信息。
[01 04]其中,在一個實施例中,所述正則表達式信息為字段模板名;所述裝置還包括:
[0105] 模板元素配置模塊,用于針對任一預置模板元素,根據(jù)以下裝置配置該預置模板 元素:
[0106] 接收對字段模板集合中的至少一個字段模板名的選擇指令;其中,每個字段模板 名對應一個字段模板,每個字段模板均有對應的正則表達式;
[0107] 將選擇的字段模板名對應的字段模板作為預置字段模板,并接收針對預置模板元 素的字段輸出名的命名指令;并,
[0108] 接收對輸出數(shù)據(jù)類型的設定指令;
[0109] 根據(jù)命名指令中包括的字段輸出名、設定指令中包括的預置輸出數(shù)據(jù)類型以及預 置字段模板,生成預置模板元素。
[0110] 其中,在一個實施例中,所述裝置還包括:
[0111] 編輯模塊,用于接收對字段模板集合的編輯指令,所述編輯指令包括以下中的任 一種:刪除字段模板集合中第一指定字段模板的刪除指令、向字段模板集合中添加字段模 板的添加指令、修改字段模板集合中第二指定字段模板的修改指令。
[0112] 其中,在一個實施例中,所述裝置還包括:
[0113] 提取模塊,用于所述解析模板獲取模塊獲取解析模板之后,提取解析模板中的每 個預置模板元素包括的字段輸出名,生成字段輸出名集合;并,提取每個預置模板元素包括 的預置輸出數(shù)據(jù)類型,生成預置輸出數(shù)據(jù)類型集合;以及,提取解析模板中的每個預置模板 元素包括的每個字段模板名,生成字段模板名集合;并建立字段模板名、預置輸出數(shù)據(jù)類型 以及字段輸出名三者之間的三維對應關(guān)系。
[0114] 其中,在一個實施例中,所述解析模塊,具體包括:
[0115] 字符串信息提取單元,用于遍歷字段模板名集合中的每個字段模板,根據(jù)每個字 段模板對應的正則表達式從待解析日志中提取與該正則表達式匹配的字符串信息;
[0116] 數(shù)據(jù)類型配置單元,用于針對提取的每個字符串信息,根據(jù)三維對應關(guān)系,確定該 字符串信息對應的字段模板對應的預置輸出數(shù)據(jù)類型,并將該字符串信息的數(shù)據(jù)類型配置 為確定的預置輸出數(shù)據(jù)類型;
[0117] 所述裝置還包括:
[0118] 對應確定模塊,用于所述輸出模塊按照預置數(shù)據(jù)交換格式,輸出解析模板中的每 個預置模板元素的字段輸出名以及每個字段輸出名對應的字符串信息之前,根據(jù)三維對應 關(guān)系,確定字段輸出名集合中的每個字段輸出名對應的字符串信息。
[0119] 其中,在一個實施例中,所述裝置還包括:
[0120]判斷待解析日志與解析模板是否匹配;
[0121 ]若匹配,則執(zhí)行所述針對每個預置模板元素中的每個正則表達式信息,從待解析 日志中提取與該正則表達式信息匹配的字符串信息的步驟。
[0122] 綜上,本發(fā)明實施例中,由于模板元素集合中包括多個模板元素,每個模板元素中 包括字段輸出名、該字段輸出名對應的至少一個字符串信息的各自的正則表達式信息、以 及字符串信息的預置輸出數(shù)據(jù)類型;用戶可以從模板元素集合中選擇的至少一個預置模板 元素構(gòu)成解析模板,而對待解析日志的解析是根據(jù)解析模板解析的,解析模板是用戶可以 根據(jù)模板元素集合隨意配置的,所以本發(fā)明實施例提供的日志解析方法,無需為特定數(shù)據(jù) 格式的待解析日志開發(fā)并維護日志解析應用程序,故此,能夠適用任意數(shù)據(jù)格式的待解析 日志,也能夠提高日志解析應用程序的開發(fā)效率,并降低維護工作量。
[0123] 關(guān)于上述實施例中的裝置,其中各個模塊執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法 的實施例中進行了詳細描述,此處將不做詳細闡述說明。
[0124] 本領域內(nèi)的技術(shù)人員應明白,本發(fā)明的實施例可提供為方法、裝置、系統(tǒng)、或計算 機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方 面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的 計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機 程序產(chǎn)品的形式。
[0125] 本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、裝置(裝置)和計算機程序產(chǎn)品的流程圖 和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程 和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指 令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理裝置的處理器以產(chǎn)生 一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn) 在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0126] 這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理裝置以特 定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指 令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或 多個方框中指定的功能。
[0127] 這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理裝置上,使得在計 算機或其他可編程裝置上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或 其他可編程裝置上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一 個方框或多個方框中指定的功能的步驟。
[0128] 盡管已描述了本發(fā)明的優(yōu)選實施例,但本領域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造 性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu) 選實施例以及落入本發(fā)明范圍的所有變更和修改。
[0129] 顯然,本領域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精 神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍 之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
【主權(quán)項】
1. 一種日志解析方法,其特征在于,包括: 獲取解析模板;其中,解析模板中包括解析后的預置數(shù)據(jù)交換格式以及從模板元素集 合中選擇的至少一個預置模板元素;每個預置模板元素中包括字段輸出名、該字段輸出名 對應的至少一個字符串信息的各自的正則表達式信息、以及字符串信息的預置輸出數(shù)據(jù)類 型; 針對每個預置模板元素中的每個正則表達式信息,從待解析日志中提取與該正則表達 式信息匹配的字符串信息;并將匹配的字符串信息配置為預置輸出數(shù)據(jù)類型; 按照預置數(shù)據(jù)交換格式,輸出解析模板中的每個預置模板元素的字段輸出名以及每個 字段輸出名對應的字符串信息。2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述正則表達式信息為字段模板名;針對 任一預置模板元素,根據(jù)以下方法配置該預置模板元素: 接收對字段模板集合中的至少一個字段模板名的選擇指令;其中,每個字段模板名對 應一個字段模板,每個字段模板均有對應的正則表達式; 將選擇的字段模板名對應的字段模板作為預置字段模板,并接收針對預置模板元素的 字段輸出名的命名指令;并, 接收對輸出數(shù)據(jù)類型的設定指令; 根據(jù)命名指令中包括的字段輸出名、設定指令中包括的預置輸出數(shù)據(jù)類型以及預置字 段模板,生成預置模板元素。3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法還包括: 接收對字段模板集合的編輯指令,所述編輯指令包括以下中的任一種:刪除字段模板 集合中第一指定字段模板的刪除指令、向字段模板集合中添加字段模板的添加指令、修改 字段模板集合中第二指定字段模板的修改指令。4. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述獲取解析模板之后,所述方法還包括: 提取解析模板中的每個預置模板元素包括的字段輸出名,生成字段輸出名集合;并,提 取每個預置模板元素包括的預置輸出數(shù)據(jù)類型,生成預置輸出數(shù)據(jù)類型集合;以及, 提取解析模板中的每個預置模板元素包括的每個字段模板名,生成字段模板名集合; 并建立字段模板名、預置輸出數(shù)據(jù)類型以及字段輸出名三者之間的三維對應關(guān)系。5. 根據(jù)權(quán)利要求4所述的方法,其特征在于,所述針對每個預置模板元素中的每個正則 表達式信息,從待解析日志中提取與該正則表達式信息匹配的字符串信息;并將匹配的字 符串信息配置為預置輸出數(shù)據(jù)類型,具體包括: 遍歷字段模板名集合中的每個字段模板,根據(jù)每個字段模板對應的正則表達式從待解 析日志中提取與該正則表達式匹配的字符串信息;并, 針對提取的每個字符串信息,根據(jù)三維對應關(guān)系,確定該字符串信息對應的字段模板 對應的預置輸出數(shù)據(jù)類型,并將該字符串信息的數(shù)據(jù)類型配置為確定的預置輸出數(shù)據(jù)類 型; 所述按照預置數(shù)據(jù)交換格式,輸出解析模板中的每個預置模板元素的字段輸出名以及 每個字段輸出名對應的字符串信息之前,所述方法還包括: 根據(jù)三維對應關(guān)系,確定字段輸出名集合中的每個字段輸出名對應的字符串信息。6. 根據(jù)權(quán)利要求1-5中任一所述的方法,其特征在于,所述方法還包括: 判斷待解析日志與解析模板是否匹配; 若匹配,則執(zhí)行所述針對每個預置模板元素中的每個正則表達式信息,從待解析日志 中提取與該正則表達式信息匹配的字符串信息的步驟。7. -種日志解析裝置,其特征在于,包括: 解析模板獲取模塊,用于獲取解析模板;其中,解析模板中包括解析后的預置數(shù)據(jù)交換 格式以及從模板元素集合中選擇的至少一個預置模板元素;每個預置模板元素中包括字段 輸出名、該字段輸出名對應的至少一個字符串信息的各自的正則表達式信息、以及字符串 信息的預置輸出數(shù)據(jù)類型; 解析模塊,用于針對每個預置模板元素中的每個正則表達式信息,從待解析日志中提 取與該正則表達式信息匹配的字符串信息;并將匹配的字符串信息配置為預置輸出數(shù)據(jù)類 型; 輸出模塊,用于按照預置數(shù)據(jù)交換格式,輸出解析模板中的每個預置模板元素的字段 輸出名以及每個字段輸出名對應的字符串信息。8. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述正則表達式信息為字段模板名;所述 裝置還包括: 模板元素配置模塊,用于針對任一預置模板元素,根據(jù)以下裝置配置該預置模板元素: 接收對字段模板集合中的至少一個字段模板名的選擇指令;其中,每個字段模板名對 應一個字段模板,每個字段模板均有對應的正則表達式; 將選擇的字段模板名對應的字段模板作為預置字段模板,并接收針對預置模板元素的 字段輸出名的命名指令;并, 接收對輸出數(shù)據(jù)類型的設定指令; 根據(jù)命名指令中包括的字段輸出名、設定指令中包括的預置輸出數(shù)據(jù)類型以及預置字 段模板,生成預置模板元素。9. 根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括: 編輯模塊,用于接收對字段模板集合的編輯指令,所述編輯指令包括以下中的任一種: 刪除字段模板集合中第一指定字段模板的刪除指令、向字段模板集合中添加字段模板的添 加指令、修改字段模板集合中第二指定字段模板的修改指令。10. 根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括: 提取模塊,用于所述解析模板獲取模塊獲取解析模板之后,提取解析模板中的每個預 置模板元素包括的字段輸出名,生成字段輸出名集合;并,提取每個預置模板元素包括的預 置輸出數(shù)據(jù)類型,生成預置輸出數(shù)據(jù)類型集合;以及,提取解析模板中的每個預置模板元 素包括的每個字段模板名,生成字段模板名集合;并建立字段模板名、預置輸出數(shù)據(jù)類型以 及字段輸出名三者之間的三維對應關(guān)系。11. 根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述解析模塊,具體包括: 字符串信息提取單元,用于遍歷字段模板名集合中的每個字段模板,根據(jù)每個字段模 板對應的正則表達式從待解析日志中提取與該正則表達式匹配的字符串信息; 數(shù)據(jù)類型配置單元,用于針對提取的每個字符串信息,根據(jù)三維對應關(guān)系,確定該字符 串信息對應的字段模板對應的預置輸出數(shù)據(jù)類型,并將該字符串信息的數(shù)據(jù)類型配置為確 定的預置輸出數(shù)據(jù)類型; 所述裝置還包括: 對應確定模塊,用于所述輸出模塊按照預置數(shù)據(jù)交換格式,輸出解析模板中的每個預 置模板元素的字段輸出名以及每個字段輸出名對應的字符串信息之前,根據(jù)三維對應關(guān) 系,確定字段輸出名集合中的每個字段輸出名對應的字符串信息。12.根據(jù)權(quán)利要求7-11中任一所述的裝置,其特征在于,所述裝置還包括: 判斷待解析日志與解析模板是否匹配; 若匹配,則執(zhí)行所述針對每個預置模板元素中的每個正則表達式信息,從待解析日志 中提取與該正則表達式信息匹配的字符串信息的步驟。
【文檔編號】G06F17/30GK106055585SQ201610342256
【公開日】2016年10月26日
【申請日】2016年5月20日
【發(fā)明人】袁帥
【申請人】北京神州綠盟信息安全科技股份有限公司, 北京神州綠盟科技有限公司