聊聊日志打印规范问题
最近有两个现场项目问题定位排查都跟加日志有关。这也是现在一个比较严重的问题之一,很多时候现场有问题找研发都是要临时增加日志然后发现场替换文件定位问题。还有些研发日志打印很随便,遇到问题日志很多但关键想用的没多少,为此我觉得很有必要规范日志打印问题。
尤其是开发也要注意自己日志是否打印规范,做好打印日志这件小事是编码人员的基本素养之一。为此开发人员应该做到以下几点,
- 保证异常捕获日志打印正确,禁止出现捕获异常不做任何处理的行为,不能直接将异常打印到控制台。
- 在线程中run方法做异常捕获并日志输出,避免线程异常日志直接被输出到控制台。
- 使用日志门面slf4j的接口API,而不是使用具体的日志实现框架API。使用占位符打印日志而非用字符串拼接的方式。
- 使用正确的日志级别打印日志,只对严重的程序逻辑异常问题使用error,在程序运行的关键节点输出info日志,在接口函数调用处可打印debug日志。不在生产环境上使用debug日志,更不要在debug日志中输出大对象文件,比如图片文件等。
- 可以在接口调用或给第三方提供的接口中增加额外的日志文件,方便对接问题的排查。可以统一采用AOP模式来打印输出函数接口调用日志。
- 对于线上已存在的频繁打印的无用的调试日志,可以将相应类的日志输出级别调高。避免输出太多无用日志占用存储空间。
- 学习并践行公司内日志处理规范,可以学习阿里开发规约中异常日志规范部分。
作为开发团队负责人,要注意重视推广并落实日志规划,在开发代码review时也要关注日志打印是否合规,是否在关键地方打印日志等。