Skip to content

Commit 06fddf2

Browse files
committed
loop/server: use otelzap logger
1 parent 0e5ebb4 commit 06fddf2

File tree

3 files changed

+31
-0
lines changed

3 files changed

+31
-0
lines changed

pkg/logger/logger.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,16 @@ func NewWith(cfgFn func(*zap.Config)) (Logger, error) {
9696
return &logger{core.Sugar()}, nil
9797
}
9898

99+
func NewWithCore(cfgFn func(*zap.Config), core zapcore.Core) (Logger, error) {
100+
cfg := zap.NewProductionConfig()
101+
cfgFn(&cfg)
102+
c, err := cfg.Build()
103+
if err != nil {
104+
return nil, err
105+
}
106+
return &logger{zap.New(zapcore.NewTee(c.Core(), core)).Sugar()}, nil
107+
}
108+
99109
// NewWithSync returns a new Logger with a given SyncWriter.
100110
func NewWithSync(w io.Writer) Logger {
101111
core := zapcore.NewCore(zapcore.NewJSONEncoder(zap.NewProductionEncoderConfig()), zapcore.AddSync(w), zapcore.InfoLevel)

pkg/loop/logger.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import (
1414
"golang.org/x/exp/slices"
1515

1616
"github.com/smartcontractkit/chainlink-common/pkg/logger"
17+
"github.com/smartcontractkit/chainlink-common/pkg/logger/otelzap"
18+
otellog "go.opentelemetry.io/otel/log"
1719
)
1820

1921
// HCLogLogger returns an [hclog.Logger] backed by the given [logger.Logger].
@@ -171,6 +173,17 @@ func NewLogger() (logger.Logger, error) {
171173
})
172174
}
173175

176+
func NewOtelLogger(otelLogger otellog.Logger) (logger.Logger, error) {
177+
cfgFn := func(cfg *zap.Config) {
178+
cfg.Level.SetLevel(zap.DebugLevel)
179+
cfg.EncoderConfig.LevelKey = "@level"
180+
cfg.EncoderConfig.MessageKey = "@message"
181+
cfg.EncoderConfig.TimeKey = "@timestamp"
182+
cfg.EncoderConfig.EncodeTime = zapcore.TimeEncoderOfLayout("2006-01-02T15:04:05.000000Z07:00")
183+
}
184+
return logger.NewWithCore(cfgFn, otelzap.NewCore(otelLogger))
185+
}
186+
174187
// onceValue returns a function that invokes f only once and returns the value
175188
// returned by f. The returned function may be called concurrently.
176189
//

pkg/loop/server.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,14 @@ func (s *Server) start() error {
148148
}
149149
beholder.SetClient(beholderClient)
150150
beholder.SetGlobalOtelProviders()
151+
152+
if beholderCfg.LogStreamingEnabled {
153+
otelLogger, err := NewOtelLogger(beholder.GetLogger())
154+
if err != nil {
155+
return fmt.Errorf("failed to enable log streaming: %w", err)
156+
}
157+
s.Logger = logger.Sugared(logger.Named(otelLogger, s.Logger.Name()))
158+
}
151159
}
152160

153161
s.promServer = NewPromServer(s.EnvConfig.PrometheusPort, s.Logger)

0 commit comments

Comments
 (0)