From 7fdeb1f66608e0253e485fa0e83108ad7fa9761b Mon Sep 17 00:00:00 2001 From: lingxin <961347548@qq.com> Date: Tue, 7 Apr 2026 16:40:12 +0800 Subject: [PATCH] spanId --- go.mod | 3 ++- go.sum | 3 +++ lxzap/lxzap.go | 17 ++++++++++++++--- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 655aa0a..14ac992 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module gitea.listensoft.net/tool/lxutils -go 1.19 +go 1.21.0 require ( github.com/bwmarrin/snowflake v0.3.0 @@ -37,6 +37,7 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/pelletier/go-toml/v2 v2.0.8 // indirect + github.com/spf13/cast v1.10.0 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.2.11 // indirect go.uber.org/multierr v1.10.0 // indirect diff --git a/go.sum b/go.sum index a5ecea3..83f6d22 100644 --- a/go.sum +++ b/go.sum @@ -40,6 +40,7 @@ github.com/gomodule/redigo v1.8.9 h1:Sl3u+2BI/kk+VEatbj0scLdrFhjPmbxOc1myhDP41ws github.com/gomodule/redigo v1.8.9/go.mod h1:7ArFNvsTjH8GMMzB4uy1snslv2BwmginuMs06a1uzZE= github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= @@ -70,6 +71,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k= github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= +github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= +github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= diff --git a/lxzap/lxzap.go b/lxzap/lxzap.go index 02d45cf..c6808ea 100644 --- a/lxzap/lxzap.go +++ b/lxzap/lxzap.go @@ -3,12 +3,12 @@ package lxzap import ( "context" "fmt" + "github.com/spf13/cast" "net" "net/http" "net/http/httputil" "os" "runtime/debug" - "strconv" "strings" "time" @@ -88,13 +88,24 @@ func GinLogger() gin.HandlerFunc { start := time.Now() path := c.Request.URL.Path query := c.Request.URL.RawQuery - spanID := NewUUID() + + // 1. 先从 header 取 + spanIDStr := c.GetHeader("TraceId") + + var spanID string + if spanIDStr == "" { + // 2. 没有就生成 + spanID = cast.ToString(NewUUID()) + } + + // 4. 放进 context(后续 handler 可用) c.Set("X-Span-ID", spanID) + c.Next() cost := time.Since(start) Lg.Info(path, zap.Int("status", c.Writer.Status()), - zap.String("spanId", strconv.Itoa(int(spanID))), + zap.String("spanId", spanID), zap.String("method", c.Request.Method), zap.String("path", path), zap.String("query", query),