zerolog

package module
v0.0.0-...-34c24d2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 15, 2024 License: Apache-2.0 Imports: 6 Imported by: 0

README

Zerolog + OpenTelemetry + Hezrt

Document

Example

  1. See this example
  2. Small change in herzt server
import (
	// ...

	"github.com/cloudwego/hertz/pkg/common/hlog"
	hertzZerolog "github.com/hertz-contrib/logger/zerolog"
	hertzOtelZerolog "github.com/hertz-contrib/obs-opentelemetry/logging/zerolog"
	"github.com/rs/zerolog"
	"github.com/rs/zerolog/log"
)

func main() {
	// ...
	
	p := provider.NewOpenTelemetryProvider(
		provider.WithServiceName(serviceName),
		// Support setting ExportEndpoint via environment variables: OTEL_EXPORTER_OTLP_ENDPOINT
		provider.WithExportEndpoint("localhost:4317"),
		provider.WithInsecure(),
	)
	defer p.Shutdown(context.Background())

	tracer, cfg := hertztracing.NewServerTracer()
	h := server.Default(tracer)
	h.Use(hertztracing.ServerMiddleware(cfg))

	logger := hertzZerolog.New(
		hertzZerolog.WithOutput(w),             // allows to specify output
		hertzZerolog.WithLevel(hlog.LevelInfo), // option with log level
		hertzZerolog.WithCaller(),              // option with caller
		hertzZerolog.WithTimestamp(),           // option with timestamp
		hertzZerolog.WithFormattedTimestamp(time.RFC3339),
	)

	log.Logger = logger.Unwrap() // log.Output(w).With().Caller().Logger()
	log.Logger = log.Level(zerolog.InfoLevel)

	otelLogger := hertzOtelZerolog.NewLogger(hertzOtelZerolog.WithLogger(logger))
	log.Logger = otelLogger.Unwrap()
	hlog.SetLogger(otelLogger)

	// ...
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func OtelSeverityText

func OtelSeverityText(lv zerolog.Level) string

OtelSeverityText convert zerolog level to otel severityText ref to https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/logs/data-model.md#severity-fields

Types

type Logger

type Logger struct {
	*hertzzerolog.Logger
	// contains filtered or unexported fields
}

func NewLogger

func NewLogger(opts ...Option) *Logger

type Option

type Option interface {
	// contains filtered or unexported methods
}

func WithLogger

func WithLogger(logger *hertzzerolog.Logger) Option

WithLogger configures logger

func WithRecordStackTraceInSpan

func WithRecordStackTraceInSpan(recordStackTraceInSpan bool) Option

WithRecordStackTraceInSpan record stack track option

func WithTraceErrorSpanLevel

func WithTraceErrorSpanLevel(level zerolog.Level) Option

WithTraceErrorSpanLevel trace error span level option

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL