Skip to content

Commit

Permalink
fix(logger): not record log message in span
Browse files Browse the repository at this point in the history
  • Loading branch information
CoderPoet committed Jan 17, 2024
1 parent 1f9e0f7 commit 9e070ce
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 58 deletions.
21 changes: 4 additions & 17 deletions logging/logrus/hook.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)
Expand All @@ -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)
Expand Down Expand Up @@ -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))
}

Expand Down
16 changes: 1 addition & 15 deletions logging/slog/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ import (
"io"
"log/slog"

"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/codes"
"go.opentelemetry.io/otel/trace"
)
Expand All @@ -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 {
Expand Down Expand Up @@ -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))
}

Expand Down
30 changes: 4 additions & 26 deletions logging/zap/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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 {
Expand Down Expand Up @@ -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))
}
}
Expand Down Expand Up @@ -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))
}
}

0 comments on commit 9e070ce

Please sign in to comment.