
文章目录引言:日志与可观测性一、本篇学习目标与准备二、核心概念与实现思路1. 为什么普通字符串日志不够2. `log/slog` 是什么3. 什么是请求 ID4. 为什么把请求 ID 放进 context5. 为什么响应头也要返回请求 ID6. 请求日志什么时候记录7. 为什么需要 `statusWriter`8. 什么是 panic 恢复9. 中间件顺序为什么重要10. `atomic.Uint64` 是什么11. 日志里不要记录什么三、课程实战:运行、源码与测试1. 怎么运行核心源码拆解:`loggingMiddleware`源码中的测试:`TestRecoveryMiddlewareReturnsInternalServerError`四、实战练习扩展练习 1:切换 JSON 日志扩展练习 2:增加隐式 200 测试五、常见问题与排错问题 1:panic 被恢复了,访问日志为什么没有记成 500?问题 2:日志里拿到的请求 ID 为什么不可信?六、与前文的联系和工程应用七、本篇小结下期预告✍创作者:全栈弄潮儿🏡 个人主页:全栈弄潮儿的个人主页🏙️ 个人社区,欢迎你的加入:全栈开发社区📙 专栏:Go零基础实战引言:日志与可观测性用户说“接口出错了”,如果日志只有一串“失败”,排查几乎无从下手。本篇为每次请求分配请求 ID,用 slog 记录方法、路径、状态和耗时,再让 panic 恢复与访问日志协作,把问题对应到具体请求。一、本篇学习目标与准备输出可查询的结构化日志。在 context 与响应头间传递请求 ID。正确记录普通请求和 panic 请求的状态。课程目录:backend-train