低空智控平台 后端go
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

26 lines
547 B

package middleware
import (
"strings"
"github.com/gin-gonic/gin"
"github.com/google/uuid"
"laic-backend/logger"
)
// TraceMiddleware 为每个请求生成/透传 traceID,便于链路日志追踪
func TraceMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
traceID := c.GetHeader("X-Trace-Id")
if traceID == "" {
traceID = strings.ReplaceAll(uuid.New().String(), "-", "")[:16]
}
logger.SetTraceID(traceID)
defer logger.CleanTraceID()
c.Header("X-Trace-Id", traceID)
c.Set("trace_id", traceID)
c.Next()
}
}