package tracing import ( "context" "github.com/spf13/viper" "go.opentelemetry.io/contrib/bridges/otelzap" "go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc" "go.opentelemetry.io/otel/sdk/log" "go.opentelemetry.io/otel/trace" "go.uber.org/zap" ) var ( Provider *log.LoggerProvider Tracer trace.Tracer Logger *zap.Logger version string = "0.0.1-alpha" ) func InitTracer(appname string) { ctx := context.Background() exp, err := otlploggrpc.New(ctx, otlploggrpc.WithInsecure(), otlploggrpc.WithEndpoint(viper.GetString("otel-endpoint"))) if err != nil { panic(err) } Provider = log.NewLoggerProvider( log.WithProcessor(log.NewBatchProcessor(exp))) otelCore := otelzap.NewCore(appname, otelzap.WithLoggerProvider(Provider)) Logger = zap.New(otelCore, zap.AddCaller()) } func DeferTracer() { Logger.Sync() Provider.Shutdown(context.Background()) }