Skip to content

Commit

Permalink
feat: add zerolog (#46) - remove unnecessary code, expose ExtraKey
Browse files Browse the repository at this point in the history
  • Loading branch information
lovung committed Jan 25, 2024
1 parent 9363274 commit 7c41e04
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 49 deletions.
27 changes: 27 additions & 0 deletions logging/zerolog/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Notes
- If you're using the global logger in `github.com/rs/zerolog/log.Logger` to do log. You should add the middleware to pass the OTEL extra information (key, value) into the `context.Context`.
- Example:
```go
import (
"context"
"time"

"github.com/cloudwego/hertz/pkg/app"
"github.com/rs/zerolog/log"
"go.opentelemetry.io/otel/trace"
"github.com/hertz-contrib/obs-opentelemetry/logging/zerolog"
)

func OtelZerologMiddleware() app.HandlerFunc {
return func(ctx context.Context, reqCtx *app.RequestContext) {
ctx = log.Logger.WithContext(ctx)

span := trace.SpanFromContext(ctx)

ctx = context.WithValue(ctx, zerolog.ExtraKey(zerolog.TraceIDKey), span.SpanContext().TraceID())
ctx = context.WithValue(ctx, zerolog.ExtraKey(zerolog.SpanIDKey), span.SpanContext().SpanID())
ctx = context.WithValue(ctx, zerolog.ExtraKey(zerolog.TraceFlagsKey), span.SpanContext().TraceFlags())

reqCtx.Next(ctx)
}
```
26 changes: 12 additions & 14 deletions logging/zerolog/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,13 @@ type Logger struct {

// Ref to https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/README.md#json-formats
const (
traceIDKey = "trace_id"
spanIDKey = "span_id"
traceFlagsKey = "trace_flags"
TraceIDKey = "trace_id"
SpanIDKey = "span_id"
TraceFlagsKey = "trace_flags"
)

type ExtraKey string

var extraKeys = []ExtraKey{traceIDKey, spanIDKey, traceFlagsKey}

func NewLogger(opts ...Option) *Logger {
config := defaultConfig()

Expand All @@ -49,15 +47,15 @@ func NewLogger(opts ...Option) *Logger {
opt.apply(config)
}
logger := *config.logger
logger.Unwrap().Hook(zerolog.HookFunc(func(e *zerolog.Event, level zerolog.Level, message string) {
newLogger := hertzzerolog.From(logger.Unwrap().Hook(zerolog.HookFunc(func(e *zerolog.Event, level zerolog.Level, message string) {
ctx := e.GetCtx()
e.Any(traceIDKey, ctx.Value(ExtraKey(traceIDKey)))
e.Any(spanIDKey, ctx.Value(ExtraKey(spanIDKey)))
e.Any(traceFlagsKey, ctx.Value(ExtraKey(traceFlagsKey)))
}))
e.Any(TraceIDKey, ctx.Value(ExtraKey(TraceIDKey)))
e.Any(SpanIDKey, ctx.Value(ExtraKey(SpanIDKey)))
e.Any(TraceFlagsKey, ctx.Value(ExtraKey(TraceFlagsKey)))
})))

return &Logger{
Logger: logger,
Logger: *newLogger,
config: config,
}
}
Expand All @@ -66,9 +64,9 @@ func (l *Logger) CtxLogf(level hlog.Level, ctx context.Context, format string, k
var zlevel zerolog.Level
span := trace.SpanFromContext(ctx)

ctx = context.WithValue(ctx, ExtraKey(traceIDKey), span.SpanContext().TraceID())
ctx = context.WithValue(ctx, ExtraKey(spanIDKey), span.SpanContext().SpanID())
ctx = context.WithValue(ctx, ExtraKey(traceFlagsKey), span.SpanContext().TraceFlags())
ctx = context.WithValue(ctx, ExtraKey(TraceIDKey), span.SpanContext().TraceID())
ctx = context.WithValue(ctx, ExtraKey(SpanIDKey), span.SpanContext().SpanID())
ctx = context.WithValue(ctx, ExtraKey(TraceFlagsKey), span.SpanContext().TraceFlags())

switch level {
case hlog.LevelDebug, hlog.LevelTrace:
Expand Down
6 changes: 0 additions & 6 deletions logging/zerolog/option.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,6 @@ func defaultConfig() *config {
// WithLogger configures logger
func WithLogger(logger *hertzzerolog.Logger) Option {
return option(func(cfg *config) {
logger.Unwrap().Hook(zerolog.HookFunc(func(e *zerolog.Event, level zerolog.Level, message string) {
ctx := e.GetCtx()
e.Any(traceIDKey, ctx.Value(ExtraKey(traceIDKey)))
e.Any(spanIDKey, ctx.Value(ExtraKey(spanIDKey)))
e.Any(traceFlagsKey, ctx.Value(ExtraKey(traceFlagsKey)))
}))
cfg.logger = logger
})
}
Expand Down
29 changes: 0 additions & 29 deletions logging/zerolog/option_test.go

This file was deleted.

0 comments on commit 7c41e04

Please sign in to comment.