log.info('submit start id=%s size=%s', req_id, len(body))
try:
handle(body)
except Exception:
log.exception('submit fail id=%s', req_id)
用户反馈偶尔提交失败,本地反复操作都正常,只能看到一句笼统的失败提示。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。
追下去是这么回事:关键分支没有日志,异常被上层统一捕获后丢失了原始上下文。
「偶发问题排查」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。监控和日志的时间要对上,时区不一致会多绕很大一圈。
临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。
一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。
处理上按这个顺序:在入口与出口记录参数摘要与耗时;异常打印堆栈与关键变量;用请求标识串联。
确认没问题再收工,问题再次出现时能从日志定位到具体环节与输入。