拉卡拉开放平台
系统正常时,没人会看日志;一旦出问题,日志是唯一能还原现场的材料。因此日志该记什么,应当按「出问题时要靠它回答什么」来设计。
| 要素 | 作用 |
|---|---|
| 时间 | 确定顺序与间隔 |
| 标识 | 串联同一次业务的各条记录 |
| 动作 | 说明这一步在做什么 |
| 原始内容 | 保留未经加工的输入与返回 |
| 结论 | 记录最终判断与后续动作 |
只记录自己解析后的结论,等于丢掉了判断依据。一旦结论本身出错,就没有第二次机会。
原始返回应当原样留存,包括那些当时看起来没用的字段。
分级的作用在于过滤:日常只看错误及以上,排查时再放开到全部。
日志里不应出现完整的敏感信息,这一点必须在写入前处理,而不是指望事后清理。
事后清理的问题在于:日志一旦散落到多个位置,就再也无法保证清理干净。
日志不能无限保留,也不能过早删除。期限的设定通常参考三个因素:
| 因素 | 影响 |
|---|---|
| 排查需要 | 问题往往滞后发现,需可回溯 |
| 存储成本 | 量大时成本不可忽略 |
| 管理要求 | 某些记录有明确的留存要求 |
常见的做法是分层:近期日志在线可查,历史日志压缩归档,超期部分按策略清理。
试图用日志替代监控,会淹没在细节里;试图用监控替代日志,则无法定位到具体请求。
日志写入本身也有成本,在高频场景下甚至可能成为瓶颈。
第三条是取舍的关键:一味追求性能而让关键日志丢失,等于在最需要的时候没有证据。
在海量日志里找到关键的那几条,需要在写入时就做好标记。建议在涉及资金动作、状态变更、外部调用的节点,统一加上可检索的标记。
有了这些标记,排查时可以先把范围缩小到关键节点,再逐步展开,效率会高很多。
日志是写给未来的自己看的。今天多记录一项信息,明天就可能少花两小时排查。这个投入产出比,在系统运行一段时间之后会格外明显。
一份设计良好的日志体系,能让排查从猜测变成检索。这两种工作方式之间的效率差距,随着系统复杂度上升会越拉越大。
日志写得好不好,标准很朴素:三个月后有人拿着一个单号来问,能否在十分钟内还原出全过程。能,就是合格的。
下一篇:接口升级时如何不打断老调用
24小时免费咨询
请输入您的联系电话,座机请加区号
