Files
akvorado/common/kafka/logs.go
2025-11-17 21:54:45 +01:00

61 lines
1.4 KiB
Go

// SPDX-FileCopyrightText: 2022 Free Mobile
// SPDX-License-Identifier: AGPL-3.0-only
package kafka
import (
"github.com/twmb/franz-go/pkg/kfake"
"github.com/twmb/franz-go/pkg/kgo"
"akvorado/common/helpers"
"akvorado/common/reporter"
)
// Logger implements kgo.Logger interface (and in tests kfake.Logger).
type Logger struct {
r *reporter.Reporter
}
var _ kgo.Logger = &Logger{}
// NewLogger creates a new kafka logger using the provided reporter.
func NewLogger(r *reporter.Reporter) *Logger {
return &Logger{r: r}
}
// Level returns the current log level.
func (l *Logger) Level() kgo.LogLevel {
if !helpers.Testing() {
return kgo.LogLevelInfo
}
return kgo.LogLevelDebug
}
// Log logs a message at the specified level.
func (l *Logger) Log(level kgo.LogLevel, msg string, keyvals ...any) {
switch level {
case kgo.LogLevelError:
l.r.Error().Fields(keyvals).Msg(msg)
case kgo.LogLevelWarn:
l.r.Warn().Fields(keyvals).Msg(msg)
case kgo.LogLevelInfo:
l.r.Info().Fields(keyvals).Msg(msg)
case kgo.LogLevelDebug:
l.r.Debug().Fields(keyvals).Msg(msg)
}
}
// Logf logs a message at the specified level for kfake.
func (l *Logger) Logf(level kfake.LogLevel, msg string, args ...any) {
switch level {
case kfake.LogLevelError:
l.r.Error().Msgf(msg, args...)
case kfake.LogLevelWarn:
l.r.Warn().Msgf(msg, args...)
case kfake.LogLevelInfo:
l.r.Info().Msgf(msg, args...)
case kfake.LogLevelDebug:
l.r.Debug().Msgf(msg, args...)
}
}