一種日志處理方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種日志處理方法和裝置,屬于網(wǎng)絡(luò)通信領(lǐng)域。方法包括:獲取預(yù)設(shè)的格式配置文件;所述格式配置文件中包括日志格式配置要求;判斷接收到的日志是否滿足所述日志格式配置要求;當(dāng)所述日志滿足所述日志格式配置要求時,根據(jù)所述日志格式配置要求解析所述日志的字段值。本發(fā)明解決了目前ETL處理方式靈活性和可復(fù)用性差以及不能提取字段之間的關(guān)系信息的問題,用戶只需要在配置文件中簡單配置格式,即可實現(xiàn)各種格式的日志的解析和處理,提高了ETL日志處理方式的靈活性和可復(fù)用性,增強了提取信息能力。
【專利說明】一種日志處理方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)通信領(lǐng)域,特別涉及一種日志處理方法和裝置。
【背景技術(shù)】
[0002]隨著網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)中的日志數(shù)量越來越多,需要構(gòu)建日志數(shù)據(jù)倉庫或數(shù)據(jù)集市,以便將不同格式的日志進行集成對外提供統(tǒng)一的模式。然而在構(gòu)建數(shù)據(jù)倉庫或數(shù)據(jù)集市時,并不能將各種不同的日志簡單地堆砌在一起,而是要進行萃取和轉(zhuǎn)置。如何對不同格式的日志進行萃取和轉(zhuǎn)置,以及如何兼容因時間推移而產(chǎn)生的各種格式的新老數(shù)據(jù),這就需要ETL (Extraction-Transformation-Loading,數(shù)據(jù)提取、轉(zhuǎn)換和加載)處理。其中,ETL,是負責(zé)將分布的、異構(gòu)數(shù)據(jù)源中的數(shù)據(jù)進行清洗、轉(zhuǎn)換、集成,最后加載到數(shù)據(jù)倉庫或數(shù)據(jù)集市中,為數(shù)據(jù)分析處理、數(shù)據(jù)挖掘的基礎(chǔ)。
[0003]目前,針對日志的ETL處理主要有三種方式:第一種方式針對每種日志格式開發(fā)一段代碼程序,采用函數(shù)、動態(tài)庫或工廠模式描述每種日志;第二種方式將正則表達式配置到配置文件中,從而取出日志中需要的字段;第三種方式是開發(fā)一種簡單的“語言”用“語言”來進行日志解析。
[0004]在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:
[0005]第一種ETL處理方式,僅針對某一具體業(yè)務(wù)的日志格式進行處理,當(dāng)有新日志或者原來的日志格式發(fā)生改變時,需要對代碼進行修改或者重新開發(fā)一套新代碼,致使工作繁瑣,而且時間久了代碼管理也會變得困難,靈活性和可復(fù)用性差;第二種方式使用正則表達式的方式,不是所有人都熟悉正則,存在寫錯的風(fēng)險;第三種開發(fā)一種語言的方式,工作量較大,且存在學(xué)習(xí)“語言”的門檻,推廣比較難。上述三種方式僅將日志中的字段值解析出來,因而從數(shù)據(jù)中提取信息能力差。
【發(fā)明內(nèi)容】
[0006]為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實施例提供了一種日志處理方法和裝置。所述技術(shù)方案如下:
[0007]—方面,提供了一種日志處理方法,所述方法包括:
[0008]獲取預(yù)設(shè)的格式配置文件;所述格式配置文件中包括日志格式配置要求;
[0009]判斷接收到的日志是否滿足所述日志格式配置要求;
[0010]當(dāng)所述日志滿足所述日志格式配置要求時,根據(jù)所述日志格式配置要求解析所述日志的字段值。
[0011 ] 具體地,所述根據(jù)所述日志格式配置要求解析所述日志的字段值之后,還包括:
[0012]對解析的所述日志的字段值進行過濾,去掉無效的字段值;
[0013]根據(jù)所述日志過濾后的字段值查找是否存在相關(guān)日志,并判斷所述日志是否需要與所述相關(guān)日志合并;
[0014]如果需要合并,則將所述日志與相關(guān)日志進行合并,并將所述日志解析的字段值存儲在所述相關(guān)日志對應(yīng)的目錄下或者轉(zhuǎn)發(fā);
[0015]如果不需要合并,則將所述日志解析的字段值進行存儲或者轉(zhuǎn)發(fā)。
[0016]具體地,所述獲取預(yù)設(shè)的格式配置文件之前,包括:
[0017]配置所述格式配置文件,所述格式配置文件中的日志格式配置要求具體包括輸入格式配置要求和輸出格式配置要求。
[0018]具體地,所述根據(jù)所述日志格式配置要求解析所述日志的字段值,包括:
[0019]當(dāng)接收到的所述日志滿足所述輸入格式配置要求時,判斷所述日志的字段模式為固定序模式還是鍵值對KV模式;
[0020]當(dāng)所述日志的字段模式是所述固定序模式時,根據(jù)所述固定序模式規(guī)則解析所述日志的字段值;
[0021]當(dāng)所述日志的字段模式是所述KV模式時,根據(jù)所述KV模式規(guī)則解析所述日志的
字段值。
[0022]進一步地,判斷所述日志是否需要與相關(guān)日志合并之后,還包括:
[0023]當(dāng)所述日志與相關(guān)日志需要合并時,則將所述日志與相關(guān)日志進行合并后,將所述日志解析的字段值根據(jù)所述輸出格式配置要求配置后,存儲在所述相關(guān)日志對應(yīng)的目錄下或者轉(zhuǎn)發(fā);
[0024]當(dāng)所述日志與相關(guān)日志不需要合并時,則將所述日志解析的字段值根據(jù)所述輸出格式配置要求配置后,進行存儲或者轉(zhuǎn)發(fā)。
[0025]另一方面,提供了一種日志處理裝置,所述裝置包括:
[0026]獲取模塊,用于獲取預(yù)設(shè)的格式配置文件;所述格式配置文件中包括日志格式配置要求;
[0027]判斷模塊,用于判斷接收到的日志是否滿足所述日志格式配置要求;
[0028]解析模塊,用于當(dāng)所述日志滿足所述日志格式配置要求時,根據(jù)所述日志格式配置要求解析所述日志的字段值。
[0029]具體地,所述裝置還包括:
[0030]過濾模塊,用于根據(jù)所述日志格式配置要求解析所述日志的字段值之后,對解析的所述日志的字段值進行過濾,去掉無效的字段值;
[0031]合并模塊,用于根據(jù)所述日志過濾后的字段值查找是否存在相關(guān)日志,并判斷所述日志是否需要與所述相關(guān)日志合并;如果需要合并,則將所述日志與相關(guān)日志進行合并,并將所述日志解析的字段值存儲在所述相關(guān)日志對應(yīng)的目錄下或者轉(zhuǎn)發(fā);如果不需要合并,則將所述日志解析的字段值進行存儲或者轉(zhuǎn)發(fā)。
[0032]具體地,所述裝置包括:
[0033]配置模塊,用于獲取預(yù)設(shè)的格式配置文件之前,配置所述格式配置文件,所述格式配置文件中的日志格式配置要求具體包括輸入格式配置要求和輸出格式配置要求。
[0034]具體地,所述解析模塊,包括:
[0035]判斷單元,用于當(dāng)接收到的所述日志滿足所述輸入格式配置要求時,判斷所述日志的字段模式為固定序模式還是鍵值對KV模式;
[0036]第一解析單元,用于當(dāng)所述日志的字段模式是所述固定序模式時,根據(jù)所述固定序模式規(guī)則解析所述日志的字段值;[0037]第二解析單元,用于當(dāng)所述日志的字段模式是所述KV模式時,根據(jù)所述KV模式規(guī)則解析所述日志的字段值。
[0038]進一步地,所述合并模塊還包括:
[0039]第一輸出單元,用于判斷所述日志是否需要與相關(guān)日志合并之后,當(dāng)所述日志與相關(guān)日志需要合并時,則將所述日志與相關(guān)日志進行合并后,將所述日志解析的字段值根據(jù)所述輸出格式配置要求配置后,存儲在所述相關(guān)日志對應(yīng)的目錄下或者轉(zhuǎn)發(fā);
[0040]第二輸出單元,用于當(dāng)所述日志與相關(guān)日志不需要合并時,則將所述日志解析的字段值根據(jù)所述輸出格式配置要求配置后,進行存儲或者轉(zhuǎn)發(fā)。
[0041]本發(fā)明實施例提供的技術(shù)方案帶來的有益效果是:
[0042]通過獲取預(yù)設(shè)的格式配置文件,根據(jù)格式配置文件中包括的日志格式配置要求判斷接收到的日志滿足日志格式配置要求時,根據(jù)日志格式配置要求解析日志的字段值,解決了目前ETL處理方式靈活性和可復(fù)用性差以及不能提取字段之間的關(guān)系信息的問題,用戶只需要在配置文件中簡單配置格式,即可實現(xiàn)各種格式的日志的解析和處理,提高了 ETL日志處理方式的靈活性和可復(fù)用性,增強了提取信息能力。
【專利附圖】
【附圖說明】
[0043]為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0044]圖1是本發(fā)明實施例一提供的日志處理方法流程圖;
[0045]圖2是本發(fā)明實施例二提供的日志處理方法流程圖;
[0046]圖3是本發(fā)明實施例二提供的日志處理系統(tǒng)結(jié)構(gòu)示意圖;
[0047]圖4是本發(fā)明實施例三提供的日志處理裝置第一種結(jié)構(gòu)示意圖;
[0048]圖5是本發(fā)明實施例三提供的日志處理裝置第二種結(jié)構(gòu)示意圖;
[0049]圖6是本發(fā)明實施例三提供的日志處理裝置第三種結(jié)構(gòu)示意圖;
[0050]圖7是本發(fā)明實施例三提供的日志處理裝置第四種結(jié)構(gòu)示意圖;
[0051]圖8是本發(fā)明實施例三提供的日志處理裝置第五種結(jié)構(gòu)示意圖。
【具體實施方式】
[0052]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細描述。
[0053]實施例一
[0054]參見圖1,本發(fā)明實施例提供了一種日志處理方法,該方法包括:
[0055]101、獲取預(yù)設(shè)的格式配置文件;格式配置文件中包括日志格式配置要求;
[0056]102、判斷接收到的日志是否滿足日志格式配置要求;
[0057]103、當(dāng)日志滿足日志格式配置要求時,根據(jù)日志格式配置要求解析日志的字段值。
[0058]具體地,根據(jù)日志格式配置要求解析日志的字段值之后,還包括:[0059]對解析的日志的字段值進行過濾,去掉無效的字段值;
[0060]根據(jù)日志過濾后的字段值查找是否存在相關(guān)日志,并判斷日志是否需要與相關(guān)日志合并;
[0061]如果需要合并,則將日志與相關(guān)日志進行合并,并將日志解析的字段值存儲在相關(guān)日志對應(yīng)的目錄下或者轉(zhuǎn)發(fā);
[0062]如果不需要合并,則將日志解析的字段值進行存儲或者轉(zhuǎn)發(fā)。
[0063]具體地,獲取預(yù)設(shè)的格式配置文件之前,包括:
[0064]配置格式配置文件,格式配置文件中的日志格式配置要求具體包括輸入格式配置要求和輸出格式配置要求。
[0065]具體地,根據(jù)日志格式配置要求解析日志的字段值,包括:
[0066]當(dāng)接收到的日志滿足輸入格式配置要求時,判斷日志的字段模式為固定序模式還是鍵值對KV模式;
[0067]當(dāng)日志的字段模式是固定序模式時,根據(jù)固定序模式規(guī)則解析日志的字段值;
[0068]當(dāng)日志的字段模式是KV模式時,根據(jù)KV模式規(guī)則解析日志的字段值。
[0069]進一步地,判斷日志是否需要與相關(guān)日志合并之后,還包括:
[0070]當(dāng)日志與相關(guān)日志需要合并時,則將日志與相關(guān)日志進行合并后,將日志解析的字段值根據(jù)輸出格式配置要求配置后,存儲在相關(guān)日志對應(yīng)的目錄下或者轉(zhuǎn)發(fā);
[0071]當(dāng)日志與相關(guān)日志不需要合并時,則將日志解析的字段值根據(jù)輸出格式配置要求配置后,進行存儲或者轉(zhuǎn)發(fā)。
[0072]本發(fā)明實施例提供的方法,通過獲取預(yù)設(shè)的格式配置文件,根據(jù)格式配置文件中包括的日志格式配置要求判斷接收到的日志滿足日志格式配置要求時,根據(jù)日志格式配置要求解析日志的字段值,解決了目前ETL處理方式靈活性和可復(fù)用性差以及不能提取字段之間的關(guān)系信息的問題,用戶只需要在配置文件中簡單配置格式,即可實現(xiàn)各種格式的日志的解析和處理,提高了 ETL日志處理方式的靈活性和可復(fù)用性,增強了提取信息能力。
[0073]實施例二
[0074]參見圖2,本發(fā)明實施例提供了一種日志處理方法,該方法包括:
[0075]201、配置格式配置文件,該格式配置文件中的日志格式配置要求具體包括輸入格式配置要求和輸出格式配置要求。
[0076]具體地,本發(fā)明實施例針對按條日志,但對那些能夠轉(zhuǎn)置為按條日志的非按條日志也能夠解析。對非文本格式日志,如二進制流日志,在轉(zhuǎn)成文本格式后依然可以適用本發(fā)明實施例提供的方法。
[0077]用戶要寫出自己或者其他用戶都能看懂的日志,能夠獲知日志對應(yīng)的字段的含義,最常用的一種模式是字段順序固定,用戶只需要第幾個字段對應(yīng)是什么含義就可以了,例如采用“\t”分割,采用“I”分割都是很常見的方式。另外一種常用的模式是KV模式,可以采用字段順序不固定,甚至字段的個數(shù)也是不固定的,當(dāng)字段順序不固定時,如果讓用戶能夠讀懂,必然會有某種標(biāo)示來進行表示,對此種標(biāo)示方式,可以籠統(tǒng)地稱為KV模式,包括類似于key=value的顯式模式以及隱式模式。
[0078]本發(fā)明實施例提供的方法需要由三個處理層和一個配置管理模塊組成的系統(tǒng)來完成,參見圖3:[0079] 網(wǎng)絡(luò)層:主要功能是接收將要處理的日志流或者轉(zhuǎn)發(fā)處理完畢的日志流。該層主要通過封裝一系列系統(tǒng)socket的API以及I/O操作來完成主要功能;
[0080]緩存Cache層:主要功能是緩存數(shù)據(jù),包括緩存網(wǎng)絡(luò)層接收到的日志,緩存Calculation層處理得到的中間結(jié)果,以及緩存將要發(fā)送的數(shù)據(jù)。Cache層可以使用多種緩存策略,包括內(nèi)存,文件或者數(shù)據(jù)庫等方式;
[0081]計算Calculation層:主要包括三個功能,解析數(shù)據(jù),根據(jù)配置過濾解析后的數(shù)據(jù),最后合并過濾的數(shù)據(jù),形成可為數(shù)據(jù)分析或者數(shù)據(jù)挖掘所用的數(shù)據(jù),具體為:解析功能:根據(jù)配置的要求,從日志流中解析出所需字段以及該字段的值,即把一條條的日志變成key-value的方式,便于后面的處理;過濾功能:根據(jù)配置的要求,對解析后的數(shù)據(jù)進行一系列的清洗工作,將不符合要求的去掉,提高待處理數(shù)據(jù)的質(zhì)量;合并功能:該功能能夠根據(jù)配置的要求,對處理出來的數(shù)據(jù)進行合并,因為不管是同一類型的日志之間還是不同類型的日志之間,都可能存在關(guān)聯(lián)關(guān)系,具體的如何關(guān)聯(lián)是由業(yè)務(wù)決定的,合并就是將存在關(guān)聯(lián)的數(shù)據(jù)組合到一起,形成新的數(shù)據(jù),該功能需要cache層提供的數(shù)據(jù)緩存的功能。
[0082]配置管理模塊,主要用于配置輸入格式、輸出格式以及系統(tǒng)需要的相關(guān)信息。
[0083]下面以常用格式的配置為例對本發(fā)明實施例提供的方法進行說明:
[0084]1、順序固定,分隔符固定
[0085]例如日志的前兩行為:
[0086]201210070100000 I 12345 弱智兒童歡樂多 |web…
[0087]201210070100011154321 精神病人思路廣 Iwenwen…
[0088]則以上日志可以配置格式為:$ {time} $ {qq} $ {query} | $ {sc}...[0089]其中,用“time”來描述時間字段,用“qq”來描述qq字段,用“query”來描述query詞;字段的名字不需要固定,用戶可以根據(jù)需要來確定名字,但輸入的名字需要和輸出的名字一致。
[0090]2、順序固定,分隔符不固定
[0091]例如日志的前兩行為:
[0092]201210070100000 12345 | 弱智兒童歡樂多 &web…
[0093]201210070100011 543211 精神病人思路廣 &wenwen…
[0094]則以上日志可以配置格式為:${time} \t$ {qq} $ {query} &$ {sc}...[0095]又例如日志的前兩行為:
[0096]201210070100000 12345 弱智兒童歡樂多 | web〈im>…
[0097]201210070100011 54321 精神病人思路廣 | wenwen〈qzone>...[0098]則以上日志可以配置格式為:${time} \t$ {qq} $ {query} $ {sc} <$ {cid} >......[0099]其中,sc表示搜索頻道,cid表示搜索流量的來源,用戶可以根據(jù)需要以及處理的日志情況來進行定義,本發(fā)明實施例處理的日志格式分隔符可以為任意組合,不限于以上例子中的分割方式。
[0100]3、順序固定的KV模式
[0101]順序固定的key-value模式可以按照順序固定的字段模式來進行解析,也可以按照key-value模式來進行解析。
[0102]例如日志的前兩行為:[0103]<qq=12345Xquery=弱智兒童歡樂多 Xtime=201210070100000>
[0104]<qq=56789Xquery=喬布斯 Xtime=201210070100021>
[0105]則按照固定順序配置為:〈qq=${qq} ><query=$ {query} ><time=$ {time} >
[0106]按照key-value模式需要配置為:
[0107]首先,聲明字段為key-value字段(“<qq=56789Xquery=喬布斯>〈time=201210070100021>”可以是某行日志的一部分,也可以是某一整行日志)
[0108]Relex_class Iinetmp
[0109]然后,再對key-value規(guī)則進行描述:
[0110][Relex_rule]
[0111]Linetmp_rule<key=value>
[0112]4、順序不固定的KV模式
[0113]例如日志的前兩行為:
[0114]<qq=12345Xquery=弱智兒童歡樂多 Xtime=201210070100000>
[0115]〈time=20121007010002l>〈qq=56789>〈query=喬布斯 >
[0116]對此種方式只能采用KV模式進行描述
[0117]首先聲明字段為KV模式字段
[0118]Relex_class Iinetmp
[0119]其中,這里的Iinetmp可以根據(jù)用戶需要起名,本發(fā)明實施例中的字段名都是可以根據(jù)需要起名。
[0120]然后再對key-value規(guī)則進行描述:
[0121][Relex_rule]
[0122]Linetmp_rule<key=value>
[0123]又例如日志的前兩行為:
[0124]qq=12345&query=弱智兒童歡樂多 &time=201210070100000
[0125]time=201210070100021&qq=56789&query=喬布斯
[0126]則首先聲明字段為key-value字段
[0127]Relex_class reserve
[0128]然后再對key-value規(guī)則進行描述:
[0129][Relex_rule]
[0130]reserve_rule key=value&
[0131]202、獲取預(yù)設(shè)的格式配置文件;格式配置文件中包括日志格式配置要求;
[0132]具體地,通過步驟201對格式配置文件進行配置后,首先讀取預(yù)設(shè)的格式配置文件,該格式配置文件中包括日志格式配置要求。其中,該日志格式配置要求具體包括輸入格式配置要求和輸出格式配置要求。
[0133]203、判斷接收到的日志是否滿足格式配置文件中的日志格式配置要求;
[0134]具體地,接收待處理的日志,然后判斷接收到的日志是否滿足日志格式配置要求,根據(jù)獲取的輸入格式配置要求,判斷日志是否滿足輸入格式配置要求。
[0135]204、當(dāng)日志滿足日志格式配置要求時,根據(jù)日志格式配置要求解析日志的字段值。[0136]具體地,如果判斷接收到的日志滿足輸入格式配置要求時,判斷日志的字段模式為固定序模式還是鍵值對KV模式;當(dāng)日志的字段模式是固定序模式時,根據(jù)固定序模式規(guī)則解析日志的字段值;當(dāng)日志的字段模式是KV模式時,根據(jù)KV模式規(guī)則解析日志的字段值。
[0137]輸入格式解析流程的處理具體過程如下:
[0138]計算Calculation層讀取上面配置時,會按照配置的輸入格式配置要求對文件進行解析。
[0139]1、對字段順序固定的處理
[0140]首先找到配置格式字符串中的“${”認為是字段的開頭,然后找到“}”,在“${”和“} ”中間的部分會被認為是字段名,固定字段順序的各字段中間的分隔符在配置中配置為${}和${}中間的部分,這些分隔符會按照原本的形勢存儲起來,在進行字符串解析時,會按照這些分隔符去獲取相關(guān)的字段。日志中第一個分隔符前面的內(nèi)容會被認為是對應(yīng)的第一個字段的內(nèi)容,第一個分隔符和第二個分隔符之間的內(nèi)容會被認為是第二個字段的內(nèi)容。其中,日志的字段內(nèi)容中不能包含分隔符,如果包含需要轉(zhuǎn)義,如果包含了轉(zhuǎn)義并且沒有轉(zhuǎn)義日志本身是不能夠被用戶或其他用戶理解的。
[0141]2、對KV模式的處理
[0142]首先,讀取配置 文件中聲明為Relexjiass類型的字段名,然后根據(jù)字段名到relex_rule中查找解析信息。在relex_rule的解析中,$ {key}前后的字符會被當(dāng)作分隔符處理,兩個分隔符中間的內(nèi)容為key,$ {value}前后的字符也會被當(dāng)作分隔符處理,兩個分隔符中間的內(nèi)容為value。此外,在$ {value}后面的字符為key-value對之間的分隔符,例如配置了“ $ {key}=$ { value }&,,,則解析:“time=201210070100021&qq=56789&query=喬布斯”時,首先根據(jù) $ {value}后面的“&” 把“time=201210070100021&qq=56789&query=喬布斯”拆分成{ “time=201210070100021,,,“qq=56789”,“query=喬布斯” },然后,因為“$ {key} =$ {value}&”前面沒有字符,而$ {1^7)和$ {value}中間是等號,則解析“qq=56789”,字符開頭到“=”的“qq”會被識別為key-value對的“key”,而“=”后面的會被識別為“value”。
[0143]205、根據(jù)日志格式配置要求解析日志的字段值之后,對解析的日志的字段值進行過濾;
[0144]具體地,根據(jù)配置的要求解析日志的字段值之后,對解析后的字段值進行一系列的過濾工作,去掉無效的字段值和不符合要求的字段值,提高待處理數(shù)據(jù)的質(zhì)量。
[0145]206、判斷日志是否需要與相關(guān)日志合并,如果合并,則將日志與相關(guān)日志進行合并后,將日志解析的字段值存儲在相關(guān)日志對應(yīng)的目錄下或者轉(zhuǎn)發(fā);如果不合并,則將日志解析的字段值進行存儲或者轉(zhuǎn)發(fā)。
[0146]具體地,根據(jù)日志過濾后的字段值判斷日志是否需要與相關(guān)日志合并;如果需要合并,則將日志與相關(guān)日志進行合并,并將日志解析的字段值存儲在相關(guān)日志對應(yīng)的目錄下或者轉(zhuǎn)發(fā);如果不需要合并,則將日志解析的字段值進行存儲或者轉(zhuǎn)發(fā)。
[0147]本發(fā)明實施例對解析的字段值進行合并,由于不管是同一類型的日志之間還是不同類型的日志之間,都可能存在關(guān)聯(lián)關(guān)系,具體如何關(guān)聯(lián)是由業(yè)務(wù)決定的,合并就是將存在關(guān)聯(lián)的數(shù)據(jù)組合到一起,形成新的數(shù)據(jù),該功能需要cache層提供的數(shù)據(jù)緩存的功能。[0148]需要說明的是,判斷日志是否需要與相關(guān)日志合并之后,還包括:
[0149]當(dāng)日志與相關(guān)日志需要合并時,則將日志與相關(guān)日志進行合并后,將日志解析的字段值根據(jù)日志格式配置要求中的輸出格式配置要求配置后,存儲在相關(guān)日志對應(yīng)的目錄下或者轉(zhuǎn)發(fā);當(dāng)日志與相關(guān)日志不需要合并時,則將日志解析的字段值根據(jù)輸出格式配置要求配置后,進行存儲或者轉(zhuǎn)發(fā)。
[0150]其中,輸出格式解析流程:
[0151]本發(fā)明實施例可按照任意想要固定字段序格式進行輸出,用戶只需在配置格式中進行簡單的描述即可。例如$ {time} \t$ {qq} I $ {query},輸出支持固定序(包括分隔符固定和分隔符不固定)以及固定序的KV兩種方式。首先,對獲取的輸出格式配置要求進行解析,找到配置格式字符串中的“${”認為是字段的開頭,然后找到“}”,在“${”和中間的部分會被認為是字段名,各字段中間的分隔符在配置中配置為${}和${}中間的部分,輸出為按照配置的格式對字段進行輸出,先從存儲中輸出字段名對應(yīng)的值,然后再輸出該字段后面的分隔符,然后再輸出下一個字段。
[0152]需要說明的是,傳統(tǒng)處理日志都需要多次中轉(zhuǎn)落地的方式完成跨地域的傳輸,最后到達處理日志的服務(wù)器,這對實時性要求比較高的數(shù)據(jù)分析工作來說,不能夠滿足業(yè)務(wù)的需要。在設(shè)計ETL的時候,本發(fā)明實施例中多個ETL可以協(xié)同工作,形成多個節(jié)點,這樣就可以組成一個處理日志的工作流,使得在日志到達最后地點時可以馬上開始分析,同時這樣可以隨意的形成串行或并行的ETL組合,針對不同的業(yè)務(wù)需要提供各自所需的數(shù)據(jù)。
[0153]需要說明的是,本發(fā)明的實現(xiàn)支持固定序和key-value兩種模式的混排和嵌套遞歸,這樣對每個字段都需要判斷他的解析方式,以及里面遞歸字段的解析方式。為了避免在日志解析的過程中,對每個字段都行循環(huán)判斷,本發(fā)明實施例采用在讀取輸入格式時存儲好對應(yīng)的解析方式,采用的存儲順序為配置的先后順序,這樣在配置解析格式時針對有嵌套情況的字段需要從大到小進行配置,例如reserve字段的內(nèi)容為“imqq=1256&ver=l.3.6&〈query=l>〈click=2>”,想得到 “query=l” 這一 key-value 對的值,則需要先解析 reserve字段,這時需要先配置reserve字段的解析方式,然后再配置“query=l”這一 key-value對的解析方式。這樣在解析的時候,只需按照字段在存儲好的列表中按順序查找就可以了,不用反復(fù)的循環(huán)判斷。
[0154]本發(fā)明實施例提供的方法,通過獲取預(yù)設(shè)的格式配置文件,根據(jù)格式配置文件中包括的日志格式配置要求判斷接收到的日志滿足日志格式配置要求時,根據(jù)日志格式配置要求解析日志的字段值,解決了目前ETL處理方式靈活性和可復(fù)用性差以及不能提取字段之間的關(guān)系信息的問題,用戶只需要在配置文件中簡單配置格式,即可實現(xiàn)各種格式的日志的解析和處理,提高了 ETL日志處理方式的靈活性和可復(fù)用性,增強了提取信息能力。
[0155]實施例三
[0156]參見圖4,本發(fā)明實施例提供了一種日志處理裝置,該裝置包括:
[0157]獲取模塊401,用于獲取預(yù)設(shè)的格式配置文件;格式配置文件中包括日志格式配置要求;
[0158]判斷模塊402,用于判斷接收到的日志是否滿足日志格式配置要求;
[0159]解析模塊403,用于當(dāng)日志滿足日志格式配置要求時,根據(jù)日志格式配置要求解析日志的字段值。[0160]具體地,參見圖5,該裝置還包括:
[0161]過濾模塊404,用于根據(jù)日志格式配置要求解析日志的字段值之后,對解析的日志的字段值進行過濾,去掉無效的字段值;
[0162]合并模塊405,用于根據(jù)所述日志過濾后的字段值查找是否存在相關(guān)日志,并判斷所述日志是否需要與所述相關(guān)日志合并;如果需要合并,則將日志與相關(guān)日志進行合并,并將日志解析的字段值存儲在相關(guān)日志對應(yīng)的目錄下或者轉(zhuǎn)發(fā);如果不需要合并,則將日志解析的字段值進行存儲或者轉(zhuǎn)發(fā)。
[0163]具體地,參見圖6,該裝置包括:
[0164]配置模塊406,用于獲取預(yù)設(shè)的格式配置文件之前,配置格式配置文件,該格式配置文件中的日志格式配置要求具體包括輸入格式配置要求和輸出格式配置要求。
[0165]具體地,參見圖7,解析模塊403,包括:
[0166]判斷單元403a,用于當(dāng)接收到的日志滿足輸入格式配置要求時,判斷日志的字段模式為固定序模式還是鍵值對KV模式;
[0167]第一解析單元403b,用于當(dāng)日志的字段模式是固定序模式時,根據(jù)固定序模式規(guī)則解析日志的字段值;
[0168]第二解析單元403c,用于當(dāng)日志的字段模式是KV模式時,根據(jù)KV模式規(guī)則解析日志的字段值。
[0169]具體地,參見圖8,合并模塊405還包括:
[0170]第一輸出單元405a,用于判斷日志是否需要與相關(guān)日志合并之后,當(dāng)日志與相關(guān)日志需要合并時,則將日志與相關(guān)日志進行合并后,將日志解析的字段值根據(jù)輸出格式配置要求配置后,存儲在相關(guān)日志對應(yīng)的目錄下或者轉(zhuǎn)發(fā);
[0171]第二輸出單元405b,用于當(dāng)日志與相關(guān)日志不需要合并時,則將日志解析的字段值根據(jù)輸出格式配置要求配置后,進行存儲或者轉(zhuǎn)發(fā)。
[0172]本發(fā)明實施例提供的裝置,通過獲取預(yù)設(shè)的格式配置文件,根據(jù)格式配置文件中包括的日志格式配置要求判斷接收到的日志滿足日志格式配置要求時,根據(jù)日志格式配置要求解析日志的字段值,解決了目前ETL處理方式靈活性和可復(fù)用性差以及不能提取字段之間的關(guān)系信息的問題,用戶只需要在配置文件中簡單配置格式,即可實現(xiàn)各種格式的日志的解析和處理,提高了 ETL日志處理方式的靈活性和可復(fù)用性,增強了提取信息能力。
[0173]需要說明的是:上述實施例提供的日志處理裝置在對日志進行ETL處理時,僅以上述各功能模塊的劃分進行舉例說明,實際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實施例提供的日志處理裝置與日志處理方法實施例屬于同一構(gòu)思,其具體實現(xiàn)過程詳見方法實施例,這里不再贅述。
[0174]上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
[0175]本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,的程序可以存儲于一種計算機可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
[0176]以上僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
【權(quán)利要求】
1.一種日志處理方法,其特征在于,所述方法包括: 獲取預(yù)設(shè)的格式配置文件;所述格式配置文件中包括日志格式配置要求; 判斷接收到的日志是否滿足所述日志格式配置要求; 當(dāng)所述日志滿足所述日志格式配置要求時,根據(jù)所述日志格式配置要求解析所述日志的字段值。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述日志格式配置要求解析所述日志的字段值之后,還包括: 對解析的所述日志的字段值進行過濾,去掉無效的字段值; 根據(jù)所述日志過濾后的字段值查找是否存在相關(guān)日志,并判斷所述日志是否需要與所述相關(guān)日志合并; 如果需要合并,則將所述日志與相關(guān)日志進行合并,并將所述日志解析的字段值存儲在所述相關(guān)日志對應(yīng)的目錄下或者轉(zhuǎn)發(fā); 如果不需要合并,則將所述日志解析的字段值進行存儲或者轉(zhuǎn)發(fā)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取預(yù)設(shè)的格式配置文件之前,包 括: 配置所述格式配置文件,所述格式配置文件中的日志格式配置要求具體包括輸入格式配置要求和輸出格式配置要求。
4.根據(jù)權(quán)利要求1或3所述的方法,其特征在于,所述根據(jù)所述日志格式配置要求解析所述日志的字段值,包括: 當(dāng)接收到的所述日志滿足所述輸入格式配置要求時,判斷所述日志的字段模式為固定序模式還是鍵值對KV模式; 當(dāng)所述日志的字段模式是所述固定序模式時,根據(jù)所述固定序模式規(guī)則解析所述日志的字段值; 當(dāng)所述日志的字段模式是所述KV模式時,根據(jù)所述KV模式規(guī)則解析所述日志的字段值。
5.根據(jù)權(quán)利要求2或3所述的方法,其特征在于,判斷所述日志是否需要與相關(guān)日志合并之后,還包括: 當(dāng)所述日志與相關(guān)日志需要合并時,則將所述日志與相關(guān)日志進行合并后,將所述日志解析的字段值根據(jù)所述輸出格式配置要求配置后,存儲在所述相關(guān)日志對應(yīng)的目錄下或者轉(zhuǎn)發(fā); 當(dāng)所述日志與相關(guān)日志不需要合并時,則將所述日志解析的字段值根據(jù)所述輸出格式配置要求配置后,進行存儲或者轉(zhuǎn)發(fā)。
6.一種日志處理裝置,其特征在于,所述裝置包括: 獲取模塊,用于獲取預(yù)設(shè)的格式配置文件;所述格式配置文件中包括日志格式配置要求; 判斷模塊,用于判斷接收到的日志是否滿足所述日志格式配置要求; 解析模塊,用于當(dāng)所述日志滿足所述日志格式配置要求時,根據(jù)所述日志格式配置要求解析所述日志的字段值。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述裝置還包括:過濾模塊,用于根據(jù)所述日志格式配置要求解析所述日志的字段值之后,對解析的所述日志的字段值進行過濾,去掉無效的字段值; 合并模塊,用于根據(jù)所述日志過濾后的字段值查找是否存在相關(guān)日志,并判斷所述日志是否需要與所述相關(guān)日志合并;如果需要合并,則將所述日志與相關(guān)日志進行合并,并將所述日志解析的字段值存儲在所述相關(guān)日志對應(yīng)的目錄下或者轉(zhuǎn)發(fā);如果不需要合并,則將所述日志解析的字段值進行存儲或者轉(zhuǎn)發(fā)。
8.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述裝置包括: 配置模塊,用于獲取預(yù)設(shè)的格式配置文件之前,配置所述格式配置文件,所述格式配置文件中的日志格式配置要求具體包括輸入格式配置要求和輸出格式配置要求。
9.根據(jù)權(quán)利要求6或8所述的裝置,其特征在于,所述解析模塊,包括: 判斷單元,用于當(dāng)接收到的所述日志滿足所述輸入格式配置要求時,判斷所述日志的字段模式為固定序模式還是鍵值對KV模式; 第一解析單元,用于當(dāng)所述日志的字段模式是所述固定序模式時,根據(jù)所述固定序模式規(guī)則解析所述日志的字段值; 第二解析單元,用于當(dāng)所述日志的字段模式是所述KV模式時,根據(jù)所述KV模式規(guī)則解析所述日志的字段值。
10.根據(jù)權(quán)利要 求7或8所述的裝置,其特征在于,所述合并模塊還包括: 第一輸出單元,用于判斷所述日志是否需要與相關(guān)日志合并之后,當(dāng)所述日志與相關(guān)日志需要合并時,則將所述日志與相關(guān)日志進行合并后,將所述日志解析的字段值根據(jù)所述輸出格式配置要求配置后,存儲在所述相關(guān)日志對應(yīng)的目錄下或者轉(zhuǎn)發(fā); 第二輸出單元,用于當(dāng)所述日志與相關(guān)日志不需要合并時,則將所述日志解析的字段值根據(jù)所述輸出格式配置要求配置后,進行存儲或者轉(zhuǎn)發(fā)。
【文檔編號】H04L12/24GK103929321SQ201310014284
【公開日】2014年7月16日 申請日期:2013年1月15日 優(yōu)先權(quán)日:2013年1月15日
【發(fā)明者】程剛, 蘆方 申請人:騰訊科技(深圳)有限公司