尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
从一次线上事故说起:后端日志规范有多重要
前年冬天的一个凌晨我被值班同事的电话从被窝里拽出来。对方的声音有点抖你赶紧看下群用户手机号在日志平台里明文暴露了法务那边已经收到了投诉。我猛地坐起来打开电脑看到那行日志的瞬间后背一凉log.info(用户信息{}, JSON.toJSONString(user))而那个user对象里除了昵称、年龄还有一个没被JsonIgnore修饰的phone字段。这条日志每天打印几万次在ELK里安安稳稳躺了三个月直到某天被一位较真的用户发现截图发到了社交平台。那一次事故没有导致数据泄露却让公司公关部忙了整整一周。最后的技术复盘结论简单到荒唐打印日志的时候没有人想过手机号该不该出现在这里。日志是给未来自己的遗书很多后端开发者对日志的认知停留在方便排查问题这个层面于是代码里到处都是log.info(进入了xx方法)和log.info(参数是 param)。这种习惯在开发阶段确实爽——一眼就能看到程序跑到了哪里。但生产环境不是游乐场每一行日志都在消耗磁盘、网络和未来那个熬夜排查问题的你的精力。日志规范的第一条也是最容易被忽视的一条区分日志级别不是给你看的是给监控系统看的。ERROR是系统真出了岔子需要立刻有人介入WARN是虽然能跑但埋了隐患值得关注INFO是业务关键节点的里程碑比如订单支付成功、用户注册完成DEBUG是给开发环境准备的碎碎念生产环境千万别开。把所有东西都打成INFO等于把所有东西都打成了噪音。那行不该出现的手机号回头说那次事故。如果团队有一套明确的日志脱敏规范那行JSON根本不会打印出来。所谓规范就是在刀砍下来之前就把刀刃包好。我们后来定了两条铁律第一任何包含phone、idCard、email、password字段的对象打印之前必须经过脱敏工具类处理手机号只显示前三位和后四位第二禁止直接用JSON.toJSONString()打印整个请求体或响应体必须按需选取字段。这两条规则写进文档没人看我们就写进了Code Review的Checklist里——每次MR必须确认新增的日志没有敏感字段。三个月后有同事在Review时拦住了一段log.info(用户信息{}, user)原因就是代码里没有调用脱敏方法。规范的落地不是靠自觉是靠流程把侥幸心理堵死。上下文比日志本身更值钱另一个隐蔽的痛点是上下文丢失。一个用户请求从网关到服务A再到服务B中间经历了好几次异步线程和RPC调用。如果日志里没有统一的traceId排查问题时就只能靠时间戳和IP拼凑像是把一本撕碎的书重新拼起来。没有上下文的日志就是一堆带时间戳的废话。我们在日志规范里强制要求每个请求入口生成一个traceId通过MDC放进SLF4J的上下文中所有日志格式统一加上[%X{traceId}]。这样一条完整的调用链用grep就能把所有相关日志捞出来按时间排序就是一篇完整的事故现场还原。第一次用这个方式排查线上问题时我对着终端屏幕愣了三秒——以前要花半小时串联的日志现在十秒钟就看懂了。异常日志的黄金法则还有一句教训是用停电换来的。有一次线上故障排查时同事发现catch块里只写了一行e.printStackTrace()控制台里什么都有但日志平台里一片空白。因为标准错误流没有被接入日志收集器。异常日志的三不原则不吞、不裸、不重复。不吞——catch到异常后至少要log.error(业务描述关键参数, e)把堆栈和业务上下文一起留下不裸——不要只写log.error(e.getMessage())异常信息往往不含业务参数你根本不知道是哪条数据出的问题不重复——高层和低层不要在同一场异常里各打一遍否则排查时满屏都是同一堆栈的复制粘贴。规范的价值在事故之前看不见在事故之后追不回那次手机号事件之后我们花了两周把全项目的日志打印点过了一遍。删掉了几百条毫无意义的info(执行完毕)给几十处敏感字段加了脱敏统一了所有服务的日志格式。做完这些事的第二周线上又出了一次故障但这次因为有完整的traceId和清晰的异常上下文定位时间从过去的平均四十分钟缩短到了八分钟。日志规范不是写给机器看的是写给三个月的自己看的。当你凌晨三点被叫起来处理故障时最怕的不是问题有多复杂而是翻遍日志只看到一堆进来了和出去了却找不到那条真正告诉你这里为什么炸了的关键信息。规矩这东西写在文档里是累赘写进事故里就是学费。愿你交过一次学费之后就不必再交第二次。
RELATED

相关推荐

华为认证备考全指南:从HCIA到HCIE的进阶路线

华为认证备考全指南:从HCIA到HCIE的进阶路线

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/6 22:32:15
JESD406-5B详解:LPDDR5/5X SPD字段解析与SPD烧录调试验证

JESD406-5B详解:LPDDR5/5X SPD字段解析与SPD烧录调试验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/7 16:08:31
ROS2仿真建图导航全流程:从Gazebo环境到Nav2自主导航

ROS2仿真建图导航全流程:从Gazebo环境到Nav2自主导航

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/29 1:41:19
MORE NEWS

更多资讯

📰

吊车是特种工吗?证书过期了不知道怎么复审延期怎么办?

吊车是特种工吗?证书过期了不知道怎么复审延期怎么办? 证书过期了不知道怎么复审延期?很多人在特种作业领域工作多年,一不小心就忽略了证书的有效期,结果想继续干,发现证没了,这事儿真让人头疼。特别是 吊车是特种工吗…

📰

电工证在运城哪里考2026河南最新政策全知道

电工证在运城哪里考2026河南最新政策全知道 你是不是也遇到过这种情况:想考个电工证,但不知道在运城哪里报名,一打听发现五花八门的培训机构,价格不一,质量参差不齐,怕被中介坑了?2026年河南最新政策出台后,报考流程和审核标准也有了新变化,…

📰

深圳高级电工证报名能用电子证书吗?外省证也能转过来!

深圳高级电工证报名能用电子证书吗?外省证也能转过来! 之前考的证在外省能不能转过来?这个问题我听得太多了,特别是像你这样在驻马店做劳务班组负责人的朋友,经常要带队去深圳、广州这些地方干活,手里有一本 电子证书…

📰

宜兴电工证哪里报名好良心建议

宜兴电工证哪里报名好良心建议 之前考的证在外省能不能转过来?这个是很多电工朋友最关心的问题,尤其是在宜兴本地工作、但证书是外地考的人员,转证流程、材料准备、时间周期都让人头疼。作为干了十多年应急管理工作的老手,我建议大家在报名前,务必搞清楚…

📰

南昌高压电工证考试地址2026河南最新政策怎么选培训机构

南昌高压电工证考试地址2026河南最新政策怎么选培训机构 怕考不过白交培训费?2026河南最新政策出炉,南昌高压电工证考试地址怎么选?别再被培训机构忽悠了,选错就白费钱!本文从信阳浉河区项目现场管理员视角出发,帮你理清高压电工证考试地址、政…

📰

沙洋县电工证培训值不值得考?学历不高也能报名,看这里就明白了

沙洋县电工证培训值不值得考?学历不高也能报名,看这里就明白了 你是不是也担心自己学历不高,报不了电工证?其实,这完全不用担心。 沙洋县电工证培训 的报考条件,对学历要求并不高,只要具备一定的实践经验,基本都能顺利报名。而且, 值不值得考…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬