feat: 实现 trace context 注入与提取功能

This commit is contained in:
hhs
2026-06-21 22:00:12 +08:00
parent e0dc8272a5
commit 0108ef2064

View File

@@ -0,0 +1,46 @@
package trace
import "context"
type traceIDKey struct{}
type requestIDKey struct{}
type sessionIDKey struct{}
// WithTraceID 将 trace ID 注入 context连接级/会话级标识)
func WithTraceID(ctx context.Context, traceID string) context.Context {
return context.WithValue(ctx, traceIDKey{}, traceID)
}
// GetTraceID 从 context 提取 trace ID
func GetTraceID(ctx context.Context) string {
if v, ok := ctx.Value(traceIDKey{}).(string); ok {
return v
}
return ""
}
// WithRequestID 将 request ID 注入 context单次请求/查询标识)
func WithRequestID(ctx context.Context, requestID string) context.Context {
return context.WithValue(ctx, requestIDKey{}, requestID)
}
// GetRequestID 从 context 提取 request ID
func GetRequestID(ctx context.Context) string {
if v, ok := ctx.Value(requestIDKey{}).(string); ok {
return v
}
return ""
}
// WithSessionID 将 session ID 注入 context会话存储标识
func WithSessionID(ctx context.Context, sessionID string) context.Context {
return context.WithValue(ctx, sessionIDKey{}, sessionID)
}
// GetSessionID 从 context 提取 session ID
func GetSessionID(ctx context.Context) string {
if v, ok := ctx.Value(sessionIDKey{}).(string); ok {
return v
}
return ""
}