文章背景
有時(shí)候輪崗或者測(cè)試反饋bug時(shí),執(zhí)行python腳本不能快速的解析騰訊mars庫(kù)的xlog文件省容,如果能像普通txt文件一樣鼠標(biāo)右鍵就可以打開(kāi)就好了抖拴,因此本文介紹的主題之一就是如何快速執(zhí)行解密xlog文件。
另外腥椒,日志里面有大量無(wú)關(guān)信息阿宅,而且普通文本么有顏色區(qū)分,很難去用肉眼看笼蛛。如果用notepad++之類(lèi)是零散的日志過(guò)濾洒放,沒(méi)法去分析某個(gè)流程的業(yè)務(wù)邏輯是否有問(wèn)題。比如你需要tagA找到滿足A條件下的日志滨砍,然后又想知道A附近有沒(méi)有B的日志往湿,此時(shí)notepad++無(wú)法做到妖异。notepad++需要進(jìn)行兩次tag的過(guò)濾,而且每次看某一個(gè)tag時(shí)领追,無(wú)法清晰的看到另一個(gè)tag的日志他膳。下面會(huì)介紹一種有用的工具,解放肉眼蔓腐,并且可以做到共享配置矩乐,方便別人輪崗分析你的模塊龄句。
關(guān)于xlog文件解密
總共需要3個(gè)文件logdecode.bat回论、logdecode.reg、decode_log_file_20181013新版本.py
我接下來(lái)要配置三個(gè)文件分歇,以便完成鼠標(biāo)右鍵使用的光榮使命
我們接下來(lái)需要一個(gè)bat可執(zhí)行文件傀蓉,我們用它來(lái)進(jìn)行python腳本的執(zhí)行。
logdecode.bat批處理文件的內(nèi)容如下职抡,主要是申明你的python安裝路徑葬燎,以及你的python腳本路徑
c:\Python27\python.exe C:\Users\Administrator\Desktop\decode_mars_log_file舊版.py %*
下面這個(gè)是python解密文件,在官方腳本的基礎(chǔ)上缚甩,增加了對(duì)BOM-UTF-8谱净,避免下面介紹的日志查看工具無(wú)法顯示中文的問(wèn)題。
這個(gè)函數(shù)稍作修改擅威,避免日志分析工具看到中文是亂碼
def ParseFile(_file, _outfile):
fp = open(_file, "rb")
_buffer = bytearray(os.path.getsize(_file))
fp.readinto(_buffer)
fp.close()
startpos = GetLogStartPos(_buffer, 2)
if -1 == startpos:
return
outbuffer = bytearray()
while True:
startpos = DecodeBuffer(_buffer, startpos, outbuffer)
if -1 == startpos: break;
if 0 == len(outbuffer): return
fpout = open(_outfile, "wb")
fpout.write(codecs.BOM_UTF8)
fpout.write(outbuffer)
fpout.close()
最后重要的一步是如何放到鼠標(biāo)右鍵菜單里壕探,配置下面的.reg配置表文件
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\新版本解密Log\command]
@="logdecode.bat \"%1\""
接下來(lái)你只要雙擊reg文件運(yùn)行即可,然后你可以看到鼠標(biāo)右鍵已經(jīng)存在了郊丛。如果你logdecode.bat里配置錯(cuò)誤路徑或者其它李请,請(qǐng)清除解密日志的注冊(cè)表項(xiàng),然后再重新注冊(cè)下厉熟。
現(xiàn)在你可以用鼠標(biāo)右鍵快速解析需要的日志文件导盅,他會(huì)在當(dāng)前目錄生成解析后的文件,可以多選哦揍瑟。
關(guān)于日志查看
TextAnalysisTool.NET 白翻,這個(gè)是我們要用到的日志查看工具,我用的是2016的版本绢片。下載地址
大概的應(yīng)用界面如下滤馍,在加入過(guò)濾器后。
圖中橙色之類(lèi)的就是過(guò)濾條件杉畜,可以用正則去匹配纪蜒,滿足條件就可以標(biāo)記文本顏色或者行背景色。
右上角有個(gè)filters此叠,就是添加過(guò)濾tag的地方纯续。
增加的tag都顯示在下面随珠,可以取消勾中,以便只使用部分tag去過(guò)濾標(biāo)記日志猬错。
如果你想要沒(méi)被tag匹配中的日志行消失窗看,那么按Ctrl+H快捷鍵,即可隱藏倦炒。如果恢復(fù)到原樣显沈,再按一次即可。現(xiàn)在你可以同時(shí)查看不同條件下滿足的日志組成的一套流程日志了逢唤,可以分析各種業(yè)務(wù)流程拉讯,如activity生命周期、發(fā)送文件流程鳖藕,推送消息是否收到并且通知到業(yè)務(wù)層刷新等等
如果你想回到某一個(gè)tag標(biāo)記的顏色的日志行附近魔慷,你點(diǎn)擊選中那一行,然后按Ctrl+H著恩,這樣恢復(fù)的界面就是在這一個(gè)日志行附近院尔,非常方便。
如果你想保存這一次分析某個(gè)問(wèn)題的過(guò)濾條件喉誊,可以點(diǎn)擊下面這里
里面有Save filter選項(xiàng)邀摆,然后編輯你的tat過(guò)濾tag的文件的名字,保存即可伍茄。以后你可以拷貝給別人栋盹,或者自己再次選擇使用,比如下面這種