|
|
|
@ -5,68 +5,23 @@ import (
|
|
|
|
|
"fmt"
|
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
|
"go.dtapp.net/gostring"
|
|
|
|
|
"log/slog"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// CustomTraceIdContext 自定义设置跟踪编号上下文
|
|
|
|
|
func CustomTraceIdContext(ctx context.Context) context.Context {
|
|
|
|
|
|
|
|
|
|
if ctx == nil {
|
|
|
|
|
ctx = context.Background()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var traceId = gostring.GetUuId()
|
|
|
|
|
|
|
|
|
|
// slog
|
|
|
|
|
if v, ok := ctx.Value(SlogFields).([]slog.Attr); ok {
|
|
|
|
|
v = append(v, slog.String(TraceIdKey, traceId))
|
|
|
|
|
return context.WithValue(ctx, SlogFields, v)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var v []slog.Attr
|
|
|
|
|
v = append(v, slog.String(TraceIdKey, traceId))
|
|
|
|
|
|
|
|
|
|
return context.WithValue(context.WithValue(ctx, SlogFields, v), TraceIdKey, traceId)
|
|
|
|
|
return context.WithValue(ctx, TraceIdKey, traceId)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// SetCustomTraceId 自定义设置跟踪编号上下文
|
|
|
|
|
func SetCustomTraceId(ctx context.Context, traceId string) context.Context {
|
|
|
|
|
|
|
|
|
|
if ctx == nil {
|
|
|
|
|
ctx = context.Background()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// slog
|
|
|
|
|
if v, ok := ctx.Value(SlogFields).([]slog.Attr); ok {
|
|
|
|
|
v = append(v, slog.String(TraceIdKey, traceId))
|
|
|
|
|
return context.WithValue(ctx, SlogFields, v)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var v []slog.Attr
|
|
|
|
|
v = append(v, slog.String(TraceIdKey, traceId))
|
|
|
|
|
|
|
|
|
|
return context.WithValue(context.WithValue(ctx, SlogFields, v), TraceIdKey, traceId)
|
|
|
|
|
return context.WithValue(ctx, TraceIdKey, traceId)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// SetGinTraceIdContext 设置跟踪编号上下文
|
|
|
|
|
func SetGinTraceIdContext(ctx context.Context, c *gin.Context) context.Context {
|
|
|
|
|
|
|
|
|
|
if ctx == nil {
|
|
|
|
|
ctx = context.Background()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var traceId = GetGinTraceId(c)
|
|
|
|
|
|
|
|
|
|
// slog
|
|
|
|
|
if v, ok := ctx.Value(SlogFields).([]slog.Attr); ok {
|
|
|
|
|
v = append(v, slog.String(TraceIdKey, traceId))
|
|
|
|
|
return context.WithValue(ctx, SlogFields, v)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var v []slog.Attr
|
|
|
|
|
v = append(v, slog.String(TraceIdKey, traceId))
|
|
|
|
|
|
|
|
|
|
return context.WithValue(context.WithValue(ctx, SlogFields, v), TraceIdKey, traceId)
|
|
|
|
|
return context.WithValue(ctx, TraceIdKey, traceId)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// GetTraceIdContext 通过上下文获取跟踪编号
|
|
|
|
|