contrib/rs/zerolog
Those integration are enabled by having the
following import in the project’s orchestrion.tool.go file:
import (
_ "github.com/DataDog/orchestrion"
_ "github.com/DataDog/dd-trace-go/contrib/rs/zerolog/v2" // integration
//...
)Structured, pluggable logging for Go.
DDContextLogHook
Definition of
zerolog.LoggerIntroduce new declarations:
// Using the following synthetic imports:
import (
ext "github.com/DataDog/dd-trace-go/v2/ddtrace/ext"
strconv "strconv"
telemetry "github.com/DataDog/dd-trace-go/v2/internal/telemetry"
tracer "github.com/DataDog/dd-trace-go/v2/ddtrace/tracer"
)func init() {
telemetry.LoadIntegration("rs/zerolog")
tracer.MarkIntegrationImported("github.com/rs/zerolog")
}
// DDContextLogHook ensures that any span in the log context is correlated to log output.
type DDContextLogHook struct{}
// Run implements zerolog.Hook interface, attaches trace and span details found in entry context
func (d DDContextLogHook) Run(e *Event, _ Level, _ string) {
span, found := tracer.SpanFromContext(e.GetCtx())
if !found {
return
}
e.Str(ext.LogKeyTraceID, span.Context().TraceID())
e.Str(ext.LogKeySpanID, strconv.FormatUint(span.Context().SpanID(), 10))
}New
All of
- Import path
github.com/rs/ zerolog - Function body
- Function declaration
- Function name
New
Prepend statements produced by the following template:
{{- $logger := .Function.Result 0 -}}
defer func() {
{{ $logger }} = {{ $logger }}.Hook(&DDContextLogHook{})
}()*zerolog.Logger
Struct literal
zerolog.Logger- Pointer
Replace the expression using the template:
// Using the following synthetic imports:
import (
zerolog "github.com/rs/zerolog"
)func(logger *zerolog.Logger) *zerolog.Logger {
*logger = logger.Hook(&zerolog.DDContextLogHook{})
return logger
}({{ . }})zerolog.Logger
Struct literal
zerolog.Logger- Value
Replace the expression using the template:
// Using the following synthetic imports:
import (
zerolog "github.com/rs/zerolog"
)func(logger zerolog.Logger) zerolog.Logger {
return logger.Hook(&zerolog.DDContextLogHook{})
}({{ . }})