diff --git a/logging/logrus/hook.go b/logging/logrus/hook.go index ccbe780..928c3a1 100644 --- a/logging/logrus/hook.go +++ b/logging/logrus/hook.go @@ -18,7 +18,6 @@ import ( "errors" "github.com/sirupsen/logrus" - "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/codes" "go.opentelemetry.io/otel/trace" ) @@ -28,12 +27,6 @@ const ( traceIDKey = "trace_id" spanIDKey = "span_id" traceFlagsKey = "trace_flags" - logEventKey = "log" -) - -var ( - logSeverityTextKey = attribute.Key("otel.log.severity.text") - logMessageKey = attribute.Key("otel.log.message") ) var _ logrus.Hook = (*TraceHook)(nil) @@ -73,17 +66,11 @@ func (h *TraceHook) Fire(entry *logrus.Entry) error { entry.Data[spanIDKey] = span.SpanContext().SpanID() entry.Data[traceFlagsKey] = span.SpanContext().TraceFlags() - // attach log to span event attributes - attrs := []attribute.KeyValue{ - logMessageKey.String(entry.Message), - logSeverityTextKey.String(OtelSeverityText(entry.Level)), - } - - span.AddEvent(logEventKey, trace.WithAttributes(attrs...)) - - // set span status if entry.Level <= h.cfg.errorSpanLevel { - span.SetStatus(codes.Error, entry.Message) + // set span status + span.SetStatus(codes.Error, "") + + // record error with stack trace span.RecordError(errors.New(entry.Message), trace.WithStackTrace(h.cfg.recordStackTraceInSpan)) } diff --git a/logging/slog/handler.go b/logging/slog/handler.go index ddfc005..afdee9f 100644 --- a/logging/slog/handler.go +++ b/logging/slog/handler.go @@ -20,7 +20,6 @@ import ( "io" "log/slog" - "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/codes" "go.opentelemetry.io/otel/trace" ) @@ -29,12 +28,6 @@ const ( traceIDKey = "trace_id" spanIDKey = "span_id" traceFlagsKey = "trace_flags" - logEventKey = "log" -) - -var ( - logSeverityTextKey = attribute.Key("otel.log.severity.text") - logMessageKey = attribute.Key("otel.log.message") ) type traceConfig struct { @@ -79,16 +72,9 @@ func (t *traceHandler) Handle(ctx context.Context, record slog.Record) error { return t.Handler.Handle(ctx, record) } - attrs := []attribute.KeyValue{ - logMessageKey.String(record.Message), - logSeverityTextKey.String(OtelSeverityText(record.Level)), - } - - span.AddEvent(logEventKey, trace.WithAttributes(attrs...)) - // set span status if record.Level >= t.tcfg.errorSpanLevel { - span.SetStatus(codes.Error, record.Message) + span.SetStatus(codes.Error, "") span.RecordError(errors.New(record.Message), trace.WithStackTrace(t.tcfg.recordStackTraceInSpan)) } diff --git a/logging/zap/logger.go b/logging/zap/logger.go index 4d98164..33820a3 100644 --- a/logging/zap/logger.go +++ b/logging/zap/logger.go @@ -21,7 +21,6 @@ import ( "io" "github.com/cloudwego/kitex/pkg/klog" - "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/codes" "go.opentelemetry.io/otel/trace" "go.uber.org/zap" @@ -35,12 +34,6 @@ const ( traceIDKey = "trace_id" spanIDKey = "span_id" traceFlagsKey = "trace_flags" - logEventKey = "log" -) - -var ( - logSeverityTextKey = attribute.Key("otel.log.severity.text") - logMessageKey = attribute.Key("otel.log.message") ) type Logger struct { @@ -172,17 +165,10 @@ func (l *Logger) CtxLogf(level klog.Level, ctx context.Context, format string, k return } - msg := getMessage(format, kvs) - - attrs := []attribute.KeyValue{ - logMessageKey.String(msg), - logSeverityTextKey.String(OtelSeverityText(zlevel)), - } - span.AddEvent(logEventKey, trace.WithAttributes(attrs...)) - // set span status if zlevel >= l.config.traceConfig.errorSpanLevel { - span.SetStatus(codes.Error, msg) + msg := getMessage(format, kvs) + span.SetStatus(codes.Error, "") span.RecordError(errors.New(msg), trace.WithStackTrace(l.config.traceConfig.recordStackTraceInSpan)) } } @@ -344,18 +330,10 @@ func (l *Logger) CtxKVLog(ctx context.Context, level klog.Level, format string, return } - msg := getMessage(format, kvs) - attrs := []attribute.KeyValue{ - logMessageKey.String(msg), - logSeverityTextKey.String(OtelSeverityText(zlevel)), - } - - // notice: AddEvent,SetStatus,RecordError all have check span.IsRecording - span.AddEvent(logEventKey, trace.WithAttributes(attrs...)) - // set span status if zlevel >= l.config.traceConfig.errorSpanLevel { - span.SetStatus(codes.Error, msg) + msg := getMessage(format, kvs) + span.SetStatus(codes.Error, "") span.RecordError(errors.New(msg), trace.WithStackTrace(l.config.traceConfig.recordStackTraceInSpan)) } }