学功夫
打小起,我就特别喜欢看 功夫电影 ,电影里如 螳螂拳 , 无影脚 等每一门功夫,都有着种种神奇的魔力吸引着我。
而最近,我从师父那里学到了一门功夫,而星爷曾说过:
“你想不想学啊,不如我教你啊!” —— 周星驰《功夫》
受到如此无私的 开源 精神影响,所以特来给大家分享一下这套名为 打日志 的功夫。
理论
我们都知道,学功夫首先要有一套基础知识,而学 打日志 这门功夫,首先就要掌握 日志等级
这套知识,而关于这套知识,这里有一本秘籍:日志等级分类宝典
简单的来说, 日志等级分类 大致有 5
种,分别为:
-
error
: 系统正处于 不稳定 状态,客户很可能已经或将要受到影响了,你必须遵守2AM
守则,即凌晨两点也要立马进行响应。 -
warn
:一个 不可预料 的事件发生了,客户有可能受到影响,你应该尽快了解发生了什么事情,并定位到问题的所在。 -
info
:生产环境中最 常见 的日志等级,用于记录系统的整个生命周期,当然也包括正常的出错业务事件,如密码错误导致的登录失败等。 -
debug
:几乎只用于 调试 ,帮助开发者在开发以及测试阶段更好地发现问题,通常可以设置在特殊流程分支的地方。 -
trace
: 等级最低,基本很少使用,使用场景为 追踪 非常详细的数据信息,如:对象的转换、在循环中记录迭代的情况等。
熟练使用不同日志等级,可以令你在测试以及生产环境中都能更快地定位问题。
招式
有了理论知识,接下来就要学 招式 了。招式是一门武术的 基础 ,决定了这门武术的上下限,而在 打日志 这门功夫中,我希望通过简短而有力的 内容 来体现出招式的精妙。
-
时间:毋庸置疑,时间是日志中最重要的标识,将日志按照时间排序后,程序是如何在运作的,一目了然。
-
日志等级:通过日志的重要性作出更清晰的日志分类。
-
进程号:可以识别出属于某次请求的全日志流程。
-
函数名:可以非常快的将问题锁定在某个函数中。
-
数据前缀:选择有意义的数据进行展示,方便识别请求的来源,保留案发现场快照。这个前缀可以是 订单号 、 用户识别码 等。
套路
好功夫要懂得套路,打日志 也不例外,否则,如果日志打的太多,显得啰嗦;打的太少,无法定位问题的位置。
最完美的日志应该要达到这种地步: 多打一行嫌多,少打一行嫌少
下面列举一些我认为需要 打日志 的 时机 和 场景 。
-
函数的入口:函数入口的日志是非常重要的,你可以非常快地判断出,传入函数的参数是否有误导致的出现异常,这种日志能帮你减少大量的逻辑思考的时间和精力。
-
调用其他函数的前后:在调用别的函数,或者远程接口的时候,将 请求的参数 以及 返回的响应 ,也能快速定位问题究竟出现在内部系统还是外部系统。
-
业务逻辑出错的时候:判断返回给用户的错误信息,是否与业务逻辑内部的错误提示是否一致。
-
数据上报:在业务系统中,日常的订单成交数、用户注册数等运营数据,接口调用时长、对外接口的耗时等系统监控日志都是时刻需要上报的
-
特别的分支流程:可以快速定位到是否产生了 脏数据 或外部系统发生了变化等情况。
终章
好了, 打日志 这门功夫已经传授完毕了,希望大家看完以后,能有一种迫不及待想要把这套功夫用在自己系统的想法。如果没有,恭喜你,你可以给我们分享一下你的 打日志 功夫,大家一起分享学习,共同进步~
网友评论