Skip to content

Trace Id

go
type TraceIDKeyType struct{}

var TraceIDKey = TraceIDKeyType{}

func TraceIDMiddleware() gin.HandlerFunc {
	return func(c *gin.Context) {

		traceID := uuid.NewString()

		c.Set("trace_id", traceID)

		ctx := context.WithValue(c.Request.Context(), TraceIDKey, traceID)
		c.Request = c.Request.WithContext(ctx)

		c.Writer.Header().Set("X-Trace-ID", traceID)

		c.Next() 
	}
}