通常,日志文件都是文本格式,其中的內(nèi)容是非結(jié)構(gòu)化的文本串。這就使得我們查詢(xún)?nèi)罩拘畔r(shí),一般只能使用文本編輯軟件的搜索功能,輸入關(guān)鍵字后,靠眼力去偵查每處匹配結(jié)果。在日志量不大,或者只是偶爾查一下時(shí),這么操作倒也無(wú)妨。不過(guò),再簡(jiǎn)單的事情也怕多次重復(fù)。如果需要頻繁查詢(xún),量變就可能引起質(zhì)變。如果每次還都要靠人工搜索,那么就算有再好的視力,也會(huì)有頭暈?zāi)垦5臅r(shí)候。因此,想要輕松查詢(xún)?nèi)罩?,就必須找到一款合適的工具,有了合適的工具,就可以一邊喝著咖啡,一邊輕彈條件回車(chē)就行了。
工具里面,首先想到的,就是利用各種計(jì)算機(jī)開(kāi)發(fā)語(yǔ)言,外加關(guān)系數(shù)據(jù)庫(kù)。但這類(lèi)工具開(kāi)發(fā)過(guò)程繁瑣,還需要準(zhǔn)備好多工作環(huán)境,包括配置語(yǔ)言開(kāi)發(fā)環(huán)境,安裝數(shù)據(jù)庫(kù)服務(wù),安裝數(shù)據(jù)庫(kù)查詢(xún)應(yīng)用等。
對(duì)于這么“重”的方案,我們果斷撇開(kāi)。因?yàn)榻裉炀鸵榻B一個(gè)輕巧方便的工具——集算器,利用集算器,可以將文本日志變成結(jié)構(gòu)化數(shù)據(jù),然后就可以使用我們熟悉的 SQL 式查詢(xún)了。
這里,我們利用到了集算語(yǔ)言 (Structured Process Language,簡(jiǎn)稱(chēng) SPL) 的兩大優(yōu)點(diǎn):
將日志內(nèi)容結(jié)構(gòu)化為數(shù)據(jù)表結(jié)構(gòu),SPL 遠(yuǎn)比常用開(kāi)發(fā)語(yǔ)言簡(jiǎn)單、易用、直觀。
SPL 支持直接對(duì)結(jié)構(gòu)化的文件進(jìn)行 SQL 查詢(xún),不再需要安裝配置第三方數(shù)據(jù)庫(kù)軟件。
下面就是具體的實(shí)施過(guò)程。
不同的日志文件,其內(nèi)容格式五花八門(mén),每一個(gè)看上去都雜亂無(wú)章。但對(duì)于某個(gè)特定的具體的日志來(lái)說(shuō),它一定會(huì)有它自己的結(jié)構(gòu)。拿到日志文件后,首先要做的就是分析日志內(nèi)容,提煉數(shù)據(jù)結(jié)構(gòu),總結(jié)出可以結(jié)構(gòu)化的字段。
作為示例,我們用騰訊視頻軟件下的一個(gè)啟動(dòng)日志來(lái)做案例。如果你也用過(guò)騰訊視頻,就可以利用下面的代碼來(lái)體驗(yàn)和學(xué)習(xí),分析一下自己的使用行為了。這個(gè)日志文件,位于當(dāng)前用戶(hù)的 AppData 路徑下,并且以 QQLive.exe[Main] 開(kāi)頭。在我的機(jī)器上,這個(gè)文件就是:
C:\Users\[Joancy]\AppData\Roaming\Tencent\QQLive\Log\QQLive.exe[Main][2018-8-3 21-5-35-557][12164].log
上述路徑中 [Joancy] 是我的 Windows 登錄用戶(hù)名,在你的機(jī)器中,將會(huì)是你的用戶(hù)名。QQLive.exe[Main]開(kāi)頭的日志文件有很多,隨便取一個(gè)就可以。
下面就是這個(gè)日志文件中的兩行:
[18-07-19 14:35:06][9416]-[31ms][QQLiveMainModule.dll][CQQLiveModule::ParsCommandLine] cmd=”C:\Program Files (x86)\Tencent\QQLive\QQLive.exe” -system_startup
[18-07-19 14:35:08][9416]-[2266ms][HttpModule.dll][CDownloadMgr::AddTask]keyid = 1,url = http://182.254.116.117/d?dn=vv.video.qq.com.&ttl=1
可以看到,這個(gè)日志的內(nèi)容比較規(guī)整,一行一條記錄。每行中一對(duì)中括號(hào)中的內(nèi)容為一節(jié),對(duì)應(yīng)一個(gè)字段。只是最后的兩節(jié)有點(diǎn)特殊,其中倒數(shù)第二節(jié)可以省略,而最后一節(jié)沒(méi)用中括號(hào)括起來(lái)。這樣,我們就可以整理出日志表的數(shù)據(jù)結(jié)構(gòu)如下,并且把第一行內(nèi)容作為對(duì)應(yīng)的示例:
字段名 | 類(lèi)型 | 分節(jié)內(nèi)容 | |
---|---|---|---|
1 | 記錄時(shí)間 | DateTime | [18-07-19 14:35:06] |
2 | 線程編號(hào) | Integer | [9416] |
3 | 加載時(shí)刻 | Integer | [31ms] |
4 | 加載模塊 | String | [QQLiveMainModule.dll] |
5 | 加載函數(shù) | String | [CQQLiveModule::ParsCommandLine] |
6 | 日志內(nèi)容 | String | cmd=”C:\Program Files (x86)\Tencent\QQLive\QQLive.exe” -system_startup |
表(1)
解析各個(gè)字段時(shí),需要注意:
1) 記錄時(shí)間: 由于年份只有兩位,所以在轉(zhuǎn)成日期時(shí)間類(lèi)型時(shí),需要指定相匹配的日期格式,否則 18 就會(huì)被當(dāng)成公元 18 年,而不是 2018 年了。具體的操作方法是打開(kāi)集算器菜單中的選項(xiàng),在彈出的窗口中點(diǎn)擊環(huán)境頁(yè)面,設(shè)置屬性‘日期時(shí)間格式’為‘yy-MM-dd HH
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。
本文名稱(chēng):日志結(jié)構(gòu)化,SQL來(lái)查詢(xún)-創(chuàng)新互聯(lián)
鏈接URL:http://www.ekvhdxd.cn/article10/ejddo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、品牌網(wǎng)站設(shè)計(jì)、商城網(wǎng)站、網(wǎng)站內(nèi)鏈、網(wǎng)站建設(shè)、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容