mirror of
https://github.com/foomo/keel.git
synced 2025-10-16 12:35:34 +00:00
51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
package telemetry
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/go-logr/logr"
|
|
"go.uber.org/zap"
|
|
"go.uber.org/zap/zapcore"
|
|
|
|
"github.com/foomo/keel/log"
|
|
)
|
|
|
|
type Logger struct {
|
|
l *zap.Logger
|
|
}
|
|
|
|
func NewLogger(l *zap.Logger) Logger {
|
|
return Logger{l: l}
|
|
}
|
|
|
|
func (l Logger) Init(info logr.RuntimeInfo) {
|
|
}
|
|
|
|
func (l Logger) Enabled(level int) bool {
|
|
return log.AtomicLevel().Enabled(zapcore.Level(-1 * level)) //nolint:gosec
|
|
}
|
|
|
|
func (l Logger) Info(level int, msg string, keysAndValues ...interface{}) {
|
|
l.l.Info(msg, l.fields(keysAndValues)...)
|
|
}
|
|
|
|
func (l Logger) Error(err error, msg string, keysAndValues ...interface{}) {
|
|
l.l.Error(msg, l.fields(keysAndValues)...)
|
|
}
|
|
|
|
func (l Logger) WithValues(keysAndValues ...interface{}) logr.LogSink {
|
|
return NewLogger(l.l.With(l.fields(keysAndValues)...))
|
|
}
|
|
|
|
func (l Logger) WithName(name string) logr.LogSink {
|
|
return NewLogger(l.l.Named(name))
|
|
}
|
|
|
|
func (l Logger) fields(keysAndValues []interface{}) []zap.Field {
|
|
ret := make([]zap.Field, 0, len(keysAndValues)/2)
|
|
for i := 0; i < len(keysAndValues); i += 2 {
|
|
ret = append(ret, zap.Any(fmt.Sprintf("%v", keysAndValues[i]), keysAndValues[i+1]))
|
|
}
|
|
return ret
|
|
}
|