面向?qū)ο蟮恼Z言中,key為對(duì)象的屬性,value為對(duì)應(yīng)的屬性值,取值方法為對(duì)象key獲取屬性值,這個(gè)屬性值的類型可以是數(shù)字、字符串、數(shù)組、對(duì)象等等。數(shù)組在JSON中是中括號(hào)“[]”括起來的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為[……]。
[0094]假定客戶端獲取的原始的日志文件的日志數(shù)據(jù)的數(shù)據(jù)格式為:
[0095]時(shí)間I版本號(hào)I記錄11記錄I信息11記錄I信息2 I記錄2 |記錄2信息11記錄2信息2
[0096]200140404 I 0.111 szx | szx:22 | szx:175|s|s:23 |s:176
[0097]則當(dāng)該客戶端將該日志文件轉(zhuǎn)換為JSON數(shù)據(jù)格式的文件后,轉(zhuǎn)換后的該日志文件中的日志數(shù)據(jù)的數(shù)據(jù)格式可如下所示:
[0098]{
[0099]“Time”: “200140404”
[0100]“Vers1n”: “0.11”
[0101]“People” [
[0102]{“name”: “szx”,“age”: “22”,“height”: “175”},
[0103]{“name”: “s”,“age”: “23”,“height”: “176”},
[0104]]
[0105]}
[0106]通過數(shù)據(jù)格式的轉(zhuǎn)換,如果日后原始的日志文件的數(shù)據(jù)格式有了修改,則修改的內(nèi)容直接就會(huì)在客戶端上報(bào)的JSON數(shù)據(jù)格式的文件中體現(xiàn),這樣一來,服務(wù)器即便不知道原始的該日志文件的數(shù)據(jù)格式,也能通過該JSON數(shù)據(jù)格式的日志文件完整而準(zhǔn)確地獲得原始的該日志文件中的日志數(shù)據(jù),從而可省去現(xiàn)有技術(shù)中服務(wù)器為配合日志文件的數(shù)據(jù)格式的修改而修改日志解析程序的流程。舉例來說,假設(shè)上述該客戶端獲取的該原始的該日志文件中增加了教育水平(edu)這一字段,則轉(zhuǎn)換后的日志文件的日志數(shù)據(jù)可表現(xiàn)為:
[0107]{
[0108]“Time”: “200140404”
[0109]“Vers1n”: “0.11”
[0110]“Status”: “ok”
[0111]“People” [
[0112]{“name”: “szx”, “age”: “22”,“height”: “ 175,,,“edu,,:“master” },
[0113]{“name”: “s”,“age”: “23”,“height”: “ 176”,“edu”:“phd” },
[0114]]
[0115]}
[0116]步驟S33,將轉(zhuǎn)換后的JSON數(shù)據(jù)格式的該日志文件上報(bào)給服務(wù)器。
[0117]終端設(shè)備100將轉(zhuǎn)換后的JSON數(shù)據(jù)格式的該日志文件上報(bào)給服務(wù)器200,使得服務(wù)器200將該日志文件中的日志數(shù)據(jù)直接存儲(chǔ)在文檔型數(shù)據(jù)庫(kù)中,從而完成日志收集的工作。
[0118]本發(fā)明實(shí)施例提供的日志收集方法,由于終端設(shè)備通過客戶端統(tǒng)一在上報(bào)前將日志文件轉(zhuǎn)換為JSON數(shù)據(jù)格式的文件后再上報(bào)給服務(wù)器,使得該服務(wù)器只需要將該客戶端上報(bào)的JSON數(shù)據(jù)格式的文件中的日志數(shù)據(jù)直接存儲(chǔ)在文檔型數(shù)據(jù)庫(kù)中即可完成日志收集的工作,省去了服務(wù)器一側(cè)日志數(shù)據(jù)清洗過濾與日志結(jié)構(gòu)化分析解析的程序,并可有效解決現(xiàn)有技術(shù)中存在的客戶端每修改一次日志文件的數(shù)據(jù)格式,服務(wù)器就需要配合進(jìn)行日志解析程序的修改,否則就無法正確讀取日志文件中各個(gè)字段的信息,也就無法做到結(jié)構(gòu)化的存儲(chǔ)的問題,從而可解放服務(wù)器一側(cè)的日志解析開發(fā)工作,并進(jìn)一步實(shí)現(xiàn)與業(yè)務(wù)無關(guān)的通用存儲(chǔ),提高日志收集的效率。
[0119]第四實(shí)施例
[0120]請(qǐng)參閱圖7,圖7為本發(fā)明第四實(shí)施例提供的日志收集方法。本實(shí)施例提供的日志收集方法可通過圖1所示的服務(wù)器200,實(shí)現(xiàn)高效地日志收集。如圖7所示,該方法包括:
[0121]步驟S41,接收終端設(shè)備上報(bào)的JSON數(shù)據(jù)格式的日志文件;
[0122]該日志文件由終端設(shè)備100根據(jù)預(yù)設(shè)的上報(bào)策略上報(bào)。JSON是一種輕量級(jí)的數(shù)據(jù)交換格式。它基于JavaScript的一個(gè)子集。JSON數(shù)據(jù)的格式為名稱/值對(duì),其中名稱寫在前面(在雙引號(hào)中),值對(duì)寫在后面(同樣在雙引號(hào)中),中間用冒號(hào)隔開。JSON的數(shù)據(jù)結(jié)構(gòu)可以由對(duì)象和數(shù)組構(gòu)成。其中對(duì)象在JSON中表示為“ {} ”括起來的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為{key:value, key:value,......}的鍵值對(duì)的結(jié)構(gòu),在面向?qū)ο蟮恼Z言中,key為對(duì)象的屬性,value為對(duì)應(yīng)的屬性值,取值方法為對(duì)象key獲取屬性值,這個(gè)屬性值的類型可以是數(shù)字、字符串、數(shù)組、對(duì)象等等。數(shù)組在JSON中是中括號(hào)“ □”括起來的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為
[“,,“,,“,,......J
[0123]步驟S42,將該JSON數(shù)據(jù)格式的日志文件中的日志數(shù)據(jù)直接存儲(chǔ)在文檔型數(shù)據(jù)庫(kù)中。
[0124]文檔型數(shù)據(jù)庫(kù)屬于非關(guān)系型數(shù)據(jù)庫(kù)(NoSQL),主要用來存儲(chǔ)、索引并管理面向文檔的數(shù)據(jù)或者類似的半結(jié)構(gòu)化數(shù)據(jù)。
[0125]進(jìn)一步地,該文檔型數(shù)據(jù)庫(kù)可以包括Mongo數(shù)據(jù)庫(kù)。Mongo數(shù)據(jù)庫(kù)中的數(shù)據(jù)以集合的方式進(jìn)行分組,每個(gè)集合都有單獨(dú)的名稱并可以包含無限數(shù)量的文檔。這里的集合同關(guān)系型數(shù)據(jù)庫(kù)中的表(table)類似。Mongo數(shù)據(jù)庫(kù)以一系列鍵值對(duì)集合的方式存儲(chǔ)數(shù)據(jù),其中鍵(Key)是字符串,值(Value)是任何一種數(shù)據(jù)類型的集合,包括數(shù)組和文檔。Mongo數(shù)據(jù)庫(kù)原生的存儲(chǔ)格式為BS0N,這是一個(gè)類JSON的二進(jìn)制存儲(chǔ)格式,簡(jiǎn)稱Binary JSON0 Mongo數(shù)據(jù)庫(kù)支持JSON數(shù)據(jù)格式與BSON數(shù)據(jù)格式的轉(zhuǎn)化。
[0126]本步驟進(jìn)一步可包括以下步驟:
[0127]第一步,調(diào)用預(yù)置的導(dǎo)入程序?qū)⑺鯦SON數(shù)據(jù)格式的日志文件中的日志數(shù)據(jù)直接導(dǎo)入所述Mongo數(shù)據(jù)庫(kù)中;
[0128]第二步驟,在所述Mongo數(shù)據(jù)庫(kù)為導(dǎo)入的所述日志數(shù)據(jù)添加基本信息,所述基本信息包括:導(dǎo)入時(shí)間、上報(bào)時(shí)間以及所述客戶端的標(biāo)識(shí)信息。
[0129]其中該客戶端的標(biāo)識(shí)信息包括但不限于:對(duì)應(yīng)的終端設(shè)備的IP地址或版本號(hào)。由于日志文件中的日志數(shù)據(jù)被原封不動(dòng)地直接導(dǎo)入Mongo數(shù)據(jù)庫(kù)中,因此可免去為保證服務(wù)器正常解析日志數(shù)據(jù)并正常存儲(chǔ)而帶來的開發(fā)維護(hù)工作。
[0130]進(jìn)一步地,服務(wù)器200可根據(jù)用戶通過Mongo數(shù)據(jù)庫(kù)的操作語法(javascript語言)發(fā)送的日志分析指令,對(duì)該Mongo數(shù)據(jù)庫(kù)中存儲(chǔ)的日志數(shù)據(jù)進(jìn)行分析操作。
[0131]本發(fā)明實(shí)施例提供的日志收集方法,由于服務(wù)器只需要將終端設(shè)備通過客戶端上報(bào)的JSON數(shù)據(jù)格式的文件中的日志數(shù)據(jù)直接存儲(chǔ)在文檔型數(shù)據(jù)庫(kù)中即可完成日志收集的工作,省去了服務(wù)器一側(cè)日志數(shù)據(jù)清洗過濾與日志結(jié)構(gòu)化分析解析的程序,并可有效解決現(xiàn)有技術(shù)中存在的客戶端每修改一次日志文件的數(shù)據(jù)格式,服務(wù)器就需要配合進(jìn)行日志解析程序的修改,否則就無法正確讀取日志文件中各個(gè)字段的信息,也就無法做到結(jié)構(gòu)化的存儲(chǔ)的問題,從而可解放服務(wù)器一側(cè)的日志解析開發(fā)工作,并進(jìn)一步實(shí)現(xiàn)與業(yè)務(wù)無關(guān)的通用存儲(chǔ),提高日志收集的效率。
[0132]第五實(shí)施例
[0133]請(qǐng)參閱圖8,圖8為本發(fā)明第五實(shí)施例與第六實(shí)施例提供的日志收集裝置50的結(jié)構(gòu)示意圖,日志收集裝置50可應(yīng)用于圖1所示終端設(shè)備100中,以實(shí)現(xiàn)上述實(shí)施例提供的日志收集方法。如圖8所示,日志收集裝置50包括:
[0134]獲取模塊51,用于通過預(yù)置的客戶端獲取日志文件;
[0135]轉(zhuǎn)換模塊52,用于根據(jù)預(yù)設(shè)的上報(bào)策略將獲取模塊51獲取的該日志文件轉(zhuǎn)換為JSON數(shù)據(jù)格式的文件;
[0136]上報(bào)模塊53,用于將轉(zhuǎn)換模塊52轉(zhuǎn)換后的JSON數(shù)據(jù)格式的該日志文件上報(bào)給服務(wù)器。
[0137]第六實(shí)施例
[0138]與第五實(shí)施例不同的是:獲取模塊51,還用于從該服務(wù)器獲取該上報(bào)策略。
[0139]本發(fā)明第五實(shí)施例與第六實(shí)施例中的日志收集裝置50中的各模塊執(zhí)行各自功能的過程,參見上述圖1至圖7中各實(shí)施例的描述,此處不再贅述。
[0140]本發(fā)明第五實(shí)施例與第六實(shí)施例提供的日志收集裝置,通過在終端設(shè)備一側(cè)通過客戶端統(tǒng)一在上報(bào)前將日志文件轉(zhuǎn)換為JSON數(shù)據(jù)格式的文件后再上報(bào)給服務(wù)器,使得該服務(wù)器只需要將該客戶端上報(bào)的JSON數(shù)據(jù)格式的文件中的日志數(shù)據(jù)直接存儲(chǔ)在文檔型數(shù)據(jù)庫(kù)中即可完成日志收集的工作,省去了服務(wù)器一側(cè)日志數(shù)據(jù)清洗過濾與日志結(jié)構(gòu)化分析解析的程序,并可有效解決現(xiàn)有技術(shù)