Files
hfb_sys/backend/internal/logging/context.go
T

44 lines
1.1 KiB
Go

package logging
import "context"
type requestIDContextKey struct{}
type adminIDContextKey struct{}
// WithRequestID 把请求 ID 写入标准 context,供非 HTTP 层日志关联请求链路。
func WithRequestID(ctx context.Context, requestID string) context.Context {
if ctx == nil || requestID == "" {
return ctx
}
return context.WithValue(ctx, requestIDContextKey{}, requestID)
}
// RequestIDFromContext 从标准 context 读取请求 ID。
func RequestIDFromContext(ctx context.Context) string {
if ctx == nil {
return ""
}
value, ok := ctx.Value(requestIDContextKey{}).(string)
if !ok {
return ""
}
return value
}
// WithAdminID 把已完成鉴权的管理员 ID 写入标准 context,供仓储审计和日志关联。
func WithAdminID(ctx context.Context, adminID uint64) context.Context {
if ctx == nil || adminID == 0 {
return ctx
}
return context.WithValue(ctx, adminIDContextKey{}, adminID)
}
// AdminIDFromContext 从标准 context 读取已完成鉴权的管理员 ID。
func AdminIDFromContext(ctx context.Context) uint64 {
if ctx == nil {
return 0
}
adminID, _ := ctx.Value(adminIDContextKey{}).(uint64)
return adminID
}