客服:用户说某功能不能用?
开发:跟用户要日志!
客服:用户说程序不响应了怎么办?
开发:跟用户要日志!
客服:用户说软件崩溃了
开发:跟用户要日志!
多熟悉的场景啊,开发人员解决问题的方式就是没日志免谈。
我们不说这样的解决方式是否恰当,只说日志的问题。从上述场景也可以看到,日志对于开发人员解决问题的重要性,遇到问题可以从日志找到线索,甚至可以回顾用户的操作过程。这是在遇到问题的时候,那没遇到问题的时候呢?日志没用了吗?
大家都知道日志是记录软件运行时刻的数据的,是软件动态情况随着时间的流逝发生变化的记录。因此才具有了可追溯性。但是,我们的开发人员日常却不太重视对日志的记录和回顾。
不重视记录,就是在软件开发的过程中错失对关键节点的日志记录,或者记录无意义的信息以及不明确的信息,这样导致了日志的效果大幅下降。当费尽千辛万苦拿到一份日志的时候,最大的悲哀是发现里面没有想要的信息,不足以支持问题的定位。因此,日志格式、记录时机、信息取舍是要用心去做的,不是像调试信息一样过于随意。
日志回顾是对日志进行分析,程序运行不是线性的,各种线程、回调、异步通知使得现代软件的运行时具有不确定性,因此日志在其中具有重要的分析意义。我们的开发人员在开发过程中往往通过各种过滤器只关注自己实现部分的日志输出,但是对于软件的完整日志,还是需要时常进行分析,从中发现问题进行修正。比如新增功能对已有部分的影响,比如重复的网络请求,比如过度的事件响应等等。
日志已经如此重要了,还有什么理由不重视日志的建设和使用呢?记录日志不是易事,且记且用且珍惜。