日志不是越多越好
日志不是越多越好
很多项目一开始都会把日志当成安全感:关键方法打一行,进入分支打一行,异常再打一行。短期看起来信息很全,真正排查时却会发现日志像流水账,想找一条有价值的线索反而更难。
日志要服务于问题
我判断一条日志有没有价值,通常看它能不能回答问题。比如请求是谁发起的、操作了哪个业务对象、走到了哪个关键阶段、失败时外部依赖返回了什么。
如果日志只是在说明代码运行到某一行,但没有业务语义,也没有上下文,那么它在生产环境里大概率只是噪音。
关键字段要稳定
一条可用的业务日志,至少应该有稳定的定位字段。用户标识、订单标识、任务标识、traceId、业务状态,这些字段能让排查从全文搜索变成精确定位。
日志内容也要尽量稳定。今天叫 orderNo,明天叫 orderId,后天拼在中文句子里,排查和告警都会变困难。日志是给人看的,也是给工具检索的。
异常日志要保留上下文
异常日志不能只打印一句失败了。真正有价值的是失败动作、关键参数、异常栈、下游响应、当前业务状态。这样排查时才知道是输入不合法、状态不允许、依赖失败,还是代码本身缺少保护。
但敏感信息不能直接打出来。手机号、证件号、密码、令牌、密钥这类内容要脱敏或不记录。日志越容易被多人访问,就越需要克制。
复盘
好的日志不是越密越好,而是关键路径上有上下文,异常位置有证据,检索字段足够稳定。它应该让排查更快,而不是让人沉进无意义的文本海里。
参考
- SLF4J 用户手册:https://www.slf4j.org/manual.html
- Logback 文档:https://logback.qos.ch/documentation.html