日志:程序的“行车记录仪”
上线后你不会一直盯着屏幕,可半夜程序照样在跑。日志就是程序的行车记录仪:它一边干活一边把“几点几分我做了什么、有没有出错”记下来。出了事,你回放记录就知道当时发生了什么。
日志一般分等级:info(正常流水)、warn(有点不对劲但还能跑)、error(出错了)。出故障时,你最先要找的就是 error。
2026-06-20 03:14:07 INFO 用户下单成功 order=8821
2026-06-20 03:14:09 WARN 调用支付接口较慢 1200ms
2026-06-20 03:14:10 ERROR 调用支付接口失败:连接超时出错了 没用,要带上是哪一步、什么参数、错在哪。告警:别等用户投诉才知道挂了
光有日志还不够——日志是被动的,得你想起来去翻才看得到。告警是主动的:你设一条规则,比如“出现 error 就给我发条消息”,程序一出问题就主动来戳你。
新手最该先配的一条告警很简单:线上一报 error,就推送给我。比让用户来投诉“你网站打不开”早得多。
几个关键指标 + 出故障先看什么
不用一上来盯几十个指标,先盯三个:错误率(一百次请求里有几次报错)、响应时间(用户点一下要等多久)、是否还活着(服务有没有在线)。这三个一异常,基本就出事了。
故障来了别瞎猜,按一条基本顺序走:先确认它还活着吗 → 翻最近的 error 日志 → 看是不是刚改过/刚部署过 → 再看关键指标是从什么时候开始变坏的。
自测 · 学完检查一下
想真正动手做题、记进度、攒连胜?到互动课里练。
判断:应用上线后,最靠谱的做法是程序员一直盯着屏幕看它有没有出错。
答案:错
没人能一直盯屏幕。线上靠的是日志(记录发生了什么)和告警(出事主动通知),而不是人工死盯。
下面哪条日志,对你事后排查“支付为什么失败”最有帮助?
答案:ERROR 调用支付接口失败:连接超时 order=8821
有用的日志要带上是哪一步、什么对象、错在哪。只写“出错了”等于没记,留不下线索。
日志和告警最本质的区别是什么?
答案:日志是被动的要你去翻,告警是主动的会来通知你
日志像录像(事后回放),告警像烟雾报警器(出事立刻响)。告警把“你得想起来去看”变成“它主动来戳你”。
判断:对新手来说,最该先配的一条告警是“线上一出现 error,就主动推送消息给我”。
答案:对
出 error 就通知,能让你比用户投诉更早发现问题,是性价比最高的第一条告警。
线上突然变慢又报错,按本节给的基本顺序,下面哪一步最该优先确认?
答案:先确认服务是不是还活着、再翻最近的 error 日志
排障顺序是:还活着吗 → 翻 error 日志 → 是不是刚改过/刚部署 → 看指标从何时变坏。先定位再动手。
排障时最值钱的一句追问是“刚刚是不是____过什么”,因为大多数线上故障都发生在一次部署或改动之后。(填两个字)
答案:改动
绝大多数故障紧跟在一次改动/部署后。先问“刚刚动过什么”,往往一步就锁定原因。