- 调整 `slog`

master
dtapps 2 months ago
parent 43c1f1ff30
commit ab6de721a6

@ -13,5 +13,5 @@
#### 安装 #### 安装
```shell ```shell
go get -v -u go.dtapp.net/gotrace_id@v1.0.10 go get -v -u go.dtapp.net/gotrace_id@v1.0.11
``` ```

@ -2,12 +2,6 @@ package gotrace_id
const Nil = "%!s(<nil>)" const Nil = "%!s(<nil>)"
type ctxKey string
const (
SlogFields ctxKey = "slog_fields"
)
const ( const (
TraceIdKey = "trace_id" TraceIdKey = "trace_id"
TraceIdGinKey = "trace_id" TraceIdGinKey = "trace_id"

@ -5,68 +5,23 @@ import (
"fmt" "fmt"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"go.dtapp.net/gostring" "go.dtapp.net/gostring"
"log/slog"
) )
// CustomTraceIdContext 自定义设置跟踪编号上下文 // CustomTraceIdContext 自定义设置跟踪编号上下文
func CustomTraceIdContext(ctx context.Context) context.Context { func CustomTraceIdContext(ctx context.Context) context.Context {
if ctx == nil {
ctx = context.Background()
}
var traceId = gostring.GetUuId() var traceId = gostring.GetUuId()
return context.WithValue(ctx, TraceIdKey, traceId)
// 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)
} }
// SetCustomTraceId 自定义设置跟踪编号上下文 // SetCustomTraceId 自定义设置跟踪编号上下文
func SetCustomTraceId(ctx context.Context, traceId string) context.Context { func SetCustomTraceId(ctx context.Context, traceId string) context.Context {
return context.WithValue(ctx, TraceIdKey, traceId)
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)
} }
// SetGinTraceIdContext 设置跟踪编号上下文 // SetGinTraceIdContext 设置跟踪编号上下文
func SetGinTraceIdContext(ctx context.Context, c *gin.Context) context.Context { func SetGinTraceIdContext(ctx context.Context, c *gin.Context) context.Context {
if ctx == nil {
ctx = context.Background()
}
var traceId = GetGinTraceId(c) var traceId = GetGinTraceId(c)
return context.WithValue(ctx, TraceIdKey, traceId)
// 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)
} }
// GetTraceIdContext 通过上下文获取跟踪编号 // GetTraceIdContext 通过上下文获取跟踪编号

@ -12,4 +12,7 @@ func TestContext(t *testing.T) {
ctx2 := context.Background() ctx2 := context.Background()
t.Log(ctx2) t.Log(ctx2)
t.Log(GetTraceIdContext(ctx2)) t.Log(GetTraceIdContext(ctx2))
ctx3 := SetCustomTraceId(context.Background(), "23456")
t.Log(ctx3)
t.Log(GetTraceIdContext(ctx3))
} }

@ -1,3 +1,3 @@
package gotrace_id package gotrace_id
const Version = "1.0.10" const Version = "1.0.11"

Loading…
Cancel
Save