Zap OpenTelemetry instrumentation example
Install otelzap instrumentation:
go get github.com/uptrace/uptrace-go/extra/otelzap
go mod edit -replace go.uber.org/zap=github.com/uptrace/zap@master
Then wrap zap logger:
logger, err := zap.NewDevelopment()
if err != nil {
panic(err)
}
defer logger.Sync()
logger = otelzap.Wrap(logger, otelzap.WithLevel(zap.NewAtomicLevelAt(zap.ErrorLevel)))
And use zap.Ctx
to propagate the active span:
logger.Ctx(ctx).Error("hello from zap",
zap.Error(errors.New("hello world")),
zap.String("foo", "bar"))
Example
To run this example:
UPTRACE_DSN="https://<token>@api.uptrace.dev/<project_id>" go run main.go
Note that this example requires patching the zap package:
go mod edit -replace go.uber.org/zap=github.com/uptrace/zap@master