24 lines
686 B
Go
24 lines
686 B
Go
package middleware
|
||
|
||
import (
|
||
"modelRT/util"
|
||
|
||
"github.com/gin-gonic/gin"
|
||
)
|
||
|
||
// StartTrace define func of set trace info from request header
|
||
func StartTrace() gin.HandlerFunc {
|
||
return func(c *gin.Context) {
|
||
traceID := c.Request.Header.Get("traceid")
|
||
pSpanID := c.Request.Header.Get("spanid")
|
||
spanID := util.GenerateSpanID(c.Request.RemoteAddr)
|
||
if traceID == "" { // 如果traceId 为空,证明是链路的发端,把它设置成此次的spanId,发端的spanId是root spanId
|
||
traceID = spanID // trace 标识整个请求的链路, span则标识链路中的不同服务
|
||
}
|
||
c.Set("traceid", traceID)
|
||
c.Set("spanid", spanID)
|
||
c.Set("pspanid", pSpanID)
|
||
c.Next()
|
||
}
|
||
}
|