请求 ID 是排障的最低成本工具。没有 request id,多服务日志只能靠时间猜;有了 request id,入口、业务、SQL 和下游调用可以串成一条线。

在 GoFrame 中可以用中间件检查请求头,没有就生成一个,并写回响应头。后续日志从 context 中取同一个值。

func RequestID(r *ghttp.Request) {
    rid := r.Header.Get("X-Request-ID")
    if rid == "" { rid = guid.S() }
    r.Response.Header().Set("X-Request-ID", rid)
    r.Middleware.Next()
}

request id 不要承担用户身份含义,也不要把它当安全凭证。它只是追踪一次请求的技术标识。

上线后很多“偶发问题”都不是偶发,只是以前缺少串联证据。

分类: GoFrame 实践 标签: 中间件 GoFrame 日志

评论

-- 评论已关闭 --

全部评论