mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-07-30 15:52:00 +08:00

- Introduces `Config`, `ConfigFactory`, `ProviderFactory`, and `Service` interfaces in `config.go`, `provider.go`, and `service.go`. - Implements `NamedMap` for managing named factories in `named.go`. - Adds `ProviderSettings` and `ScopedProviderSettings` for managing provider settings in `setting.go`.
59 lines
1.3 KiB
Go
59 lines
1.3 KiB
Go
package factory
|
|
|
|
import (
|
|
sdklog "go.opentelemetry.io/otel/log"
|
|
sdkmetric "go.opentelemetry.io/otel/metric"
|
|
sdktrace "go.opentelemetry.io/otel/trace"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
type ProviderSettings struct {
|
|
// LoggerProvider is the otel logger.
|
|
LoggerProvider sdklog.LoggerProvider
|
|
// ZapLogger is the zap logger.
|
|
ZapLogger *zap.Logger
|
|
// MeterProvider is the meter provider.
|
|
MeterProvider sdkmetric.MeterProvider
|
|
// TracerProvider is the tracer provider.
|
|
TracerProvider sdktrace.TracerProvider
|
|
}
|
|
|
|
type ScopedProviderSettings interface {
|
|
Logger() sdklog.Logger
|
|
ZapLogger() *zap.Logger
|
|
Meter() sdkmetric.Meter
|
|
Tracer() sdktrace.Tracer
|
|
}
|
|
|
|
type scoped struct {
|
|
logger sdklog.Logger
|
|
zapLogger *zap.Logger
|
|
meter sdkmetric.Meter
|
|
tracer sdktrace.Tracer
|
|
}
|
|
|
|
func NewScopedProviderSettings(settings ProviderSettings, pkgName string) *scoped {
|
|
return &scoped{
|
|
logger: settings.LoggerProvider.Logger(pkgName),
|
|
zapLogger: settings.ZapLogger.Named(pkgName),
|
|
meter: settings.MeterProvider.Meter(pkgName),
|
|
tracer: settings.TracerProvider.Tracer(pkgName),
|
|
}
|
|
}
|
|
|
|
func (s *scoped) Logger() sdklog.Logger {
|
|
return s.logger
|
|
}
|
|
|
|
func (s *scoped) ZapLogger() *zap.Logger {
|
|
return s.zapLogger
|
|
}
|
|
|
|
func (s *scoped) Meter() sdkmetric.Meter {
|
|
return s.meter
|
|
}
|
|
|
|
func (s *scoped) Tracer() sdktrace.Tracer {
|
|
return s.tracer
|
|
}
|