安利一个看Log的插件

1,602 阅读2分钟
原文链接: zhuanlan.zhihu.com

对于线上问题,我们经常需要借助日志来定位和解决问题;但是面对动辄几万行的日志文件,看起来真是头大——满屏的密密麻麻。要从日志里面提取出有用的信息,需要一款文本过滤的工具;可惜Logcat只能处理adb输出的Log,没办法处理文本文件。

曾几何时,我不是在sublime/vscode/atom里面 `cmd + f`就是在vim 里面 `/?` 来提取和跟踪日志信息,痛不欲生。。直到我遇到了 embear/vim-foldsearch


foldsearch 是一款Vim插件,它就只有一个功能:过滤日志。使用起来长这样:

上图用来演示的日志是一个4w行的文件,如果我们只对 `Advertisement` 这个TAG的日志感兴趣,可以使用`:Fw`,这样,其他TAG的日志都被*折叠(fold)* 起来了,我们眼前就只有Advertisement的日志。是不是跟Logcat很像?比如我们分析需要分析某个卡顿问题,那么自然是对主线程感兴趣,我们能否针对只看主线程的日志呢?非常简单,只需要找到主线程的线程号,然后 `:Fw`即可:


如果你需要同时过滤几种类型的TAG,比如对`Advertisement` 和 主线程的日志都感兴趣怎么办呢?它还支持正则表达式过滤,这样,针对过滤操作几乎就无所不能了。用 `:Fp advertimsement\|5599` 即可!

在折叠模式的时候,你可以使用Vim提供的任何功能,丝毫不影响。如果你需要查看折叠行里面的日志,光标移动到那一行,然后往右移动就能展开了;与Vim本身无缝结合。

另外,我们查阅日志的时候,通常会发现一些蛛丝马迹,然后顺藤摸瓜地解决问题;因此不可避免地,需要在日志文件的多个地方进行跳转。以前我是怎么做呢?记住行号,然后用行号定位;但是如果线索太多,很容易就忘了,然后又必须重新寻找,非常干扰分析问题。

我们可以用vim的书签功能来帮助我们记忆。

比如,我们碰到一个觉得可能有疑问的地方,可以 m + (a-z)的某个字母,比如 `ma` 记一个书签。然后过会儿我们想回到这里看看上下文的时候,可以 `'a` 直接跳回!

这样我们只需要关注日志本身,解决和分析问题起来,事半功倍;赶紧试试吧 :) 如果你有更好的查看日志的姿势,欢迎分享和交流~