文章背景
有时候轮岗或者测试反馈bug时,执行python脚本不能快速的解析腾讯mars库的xlog文件,如果能像普通txt文件一样鼠标右键就可以打开就好了,因此本文介绍的主题之一就是如何快速执行解密xlog文件。
另外,日志里面有大量无关信息,而且普通文本么有颜色区分,很难去用肉眼看。如果用notepad++之类是零散的日志过滤,没法去分析某个流程的业务逻辑是否有问题。比如你需要tagA找到满足A条件下的日志,然后又想知道A附近有没有B的日志,此时notepad++无法做到。notepad++需要进行两次tag的过滤,而且每次看某一个tag时,无法清晰的看到另一个tag的日志。下面会介绍一种有用的工具,解放肉眼,并且可以做到共享配置,方便别人轮岗分析你的模块。
关于xlog文件解密
总共需要3个文件logdecode.bat、logdecode.reg、decode_log_file_20181013新版本.py
image.png
我接下来要配置三个文件,以便完成鼠标右键使用的光荣使命
image.png
我们接下来需要一个bat可执行文件,我们用它来进行python脚本的执行。
logdecode.bat批处理文件的内容如下,主要是申明你的python安装路径,以及你的python脚本路径
c:\Python27\python.exe C:\Users\Administrator\Desktop\decode_mars_log_file旧版.py %*
下面这个是python解密文件,在官方脚本的基础上,增加了对BOM-UTF-8,避免下面介绍的日志查看工具无法显示中文的问题。
这个函数稍作修改,避免日志分析工具看到中文是乱码
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()
image.png
最后重要的一步是如何放到鼠标右键菜单里,配置下面的.reg配置表文件
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\新版本解密Log\command]
@="logdecode.bat \"%1\""
接下来你只要双击reg文件运行即可,然后你可以看到鼠标右键已经存在了。如果你logdecode.bat里配置错误路径或者其它,请清除解密日志的注册表项,然后再重新注册下。
现在你可以用鼠标右键快速解析需要的日志文件,他会在当前目录生成解析后的文件,可以多选哦。
image.png
关于日志查看
TextAnalysisTool.NET ,这个是我们要用到的日志查看工具,我用的是2016的版本。下载地址
image.png大概的应用界面如下,在加入过滤器后。
image.png
图中橙色之类的就是过滤条件,可以用正则去匹配,满足条件就可以标记文本颜色或者行背景色。
右上角有个filters,就是添加过滤tag的地方。
增加的tag都显示在下面,可以取消勾中,以便只使用部分tag去过滤标记日志。
image.png
如果你想要没被tag匹配中的日志行消失,那么按Ctrl+H快捷键,即可隐藏。如果恢复到原样,再按一次即可。现在你可以同时查看不同条件下满足的日志组成的一套流程日志了,可以分析各种业务流程,如activity生命周期、发送文件流程,推送消息是否收到并且通知到业务层刷新等等
image.png
如果你想回到某一个tag标记的颜色的日志行附近,你点击选中那一行,然后按Ctrl+H,这样恢复的界面就是在这一个日志行附近,非常方便。
如果你想保存这一次分析某个问题的过滤条件,可以点击下面这里
image.png
里面有Save filter选项,然后编辑你的tat过滤tag的文件的名字,保存即可。以后你可以拷贝给别人,或者自己再次选择使用,比如下面这种
image.png
网友评论