想必有许多人都想我刚进公司一样不会快速定位线上bug吧,不会快速定位bug会大大降低我们的开发效率,随之而来的就是工作质量下降、业绩下滑。
我总结了一些我常用的线上定位技巧,希望能帮助到大家!
我这里以使用阿里云日志分析作为例子
对于不同的业务场景,肯定有着不同的定位关键词,但是跟踪号是通用的,无论你的公司是做什么业务的,对于每个请求一定会有一个唯一跟踪号。
我们可以去抓取请求的跟踪号:
但是光凭跟踪号是无法做到精准定位的!通过跟踪号来查看日志,一个跟踪号就能查到两百多条,你可能觉得还好,一条一条日志翻能看完,但是这是涉及到的上下游业务链不多,有些一个跟踪号可以查到1千多条日志记录,你也一条一条看嘛,很显然这不现实,所以我需要通过一些技巧来快速定位bug的位置!!!
1. 跟踪号 + 日志级别
一般来说出现bug,选着error即可,我们看这里这个请求没有bug,所以我选着了warn的日志级别,可以看到日志板块瞬间干爽了。从原来的2百多条直接干到了1条
2. 系统错误码定位
这种方式可以不用加跟踪号,因为它这里的请求码是系统给出的报错,可以理解为就是从日志里把报错的状态码展示出来了。这种情况下直接搜索它即可
3. 跟踪号 + 微服务模块
这种方式的粒度比较大,一般适用于你很清楚它是那个环节出错了的时候选用。
还是以刚刚那个请求跟踪号为例,我任意选着一个微服务后,可以看到日志条数直将为了3条,也就是说在这个业务模块产生了3条日志记录,在去查找这个业务模块的错误就比较简单了。
4. 跟踪号 + 请求日志/响应日志
这种情况比较适用于你清楚是那个业务环节出错了的情况,比如说我在些代码的时候就对于某个字段没有做空指针处理,当测试没有传入那肯定就报错了呀。这种也是比较细的粒度,一般来说只会有一到两条日志。 可以看到定位直接精准
这里就是我比较常用的日志定位技巧,这些技巧对于公司日志量庞大的也使用,其实上线的bug大多源自你对业务流程已经一些业务名词没有搞清楚而造成的,空指针也是最常见的问题,希望大家看完这里能对大家有一些启发帮助。