瀏覽代碼

开启otel后,tracelog自动获取otle的traceId和spanId (#946)

* 开启otel后,tracelog自动获取otle的traceId和spanId

* 去除opentelemetry判断

* 通过 IsRecording 判断span是否活跃
SunJun 3 年之前
父節點
當前提交
a4d8286e36
共有 1 個文件被更改,包括 12 次插入0 次删除
  1. 12 0
      core/logx/tracelogger.go

+ 12 - 0
core/logx/tracelogger.go

@@ -6,6 +6,8 @@ import (
 	"io"
 	"time"
 
+	"go.opentelemetry.io/otel/trace"
+
 	"github.com/tal-tech/go-zero/core/timex"
 	"github.com/tal-tech/go-zero/core/trace/tracespec"
 )
@@ -93,6 +95,11 @@ func WithContext(ctx context.Context) Logger {
 }
 
 func spanIdFromContext(ctx context.Context) string {
+	span := trace.SpanFromContext(ctx)
+	if span.IsRecording() {
+		return span.SpanContext().SpanID().String()
+	}
+
 	t, ok := ctx.Value(tracespec.TracingKey).(tracespec.Trace)
 	if !ok {
 		return ""
@@ -102,6 +109,11 @@ func spanIdFromContext(ctx context.Context) string {
 }
 
 func traceIdFromContext(ctx context.Context) string {
+	span := trace.SpanFromContext(ctx)
+	if span.IsRecording() {
+		return span.SpanContext().SpanID().String()
+	}
+
 	t, ok := ctx.Value(tracespec.TracingKey).(tracespec.Trace)
 	if !ok {
 		return ""