zerolog.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. // Copyright (c) 2024 Tulir Asokan
  2. //
  3. // This Source Code Form is subject to the terms of the Mozilla Public
  4. // License, v. 2.0. If a copy of the MPL was not distributed with this
  5. // file, You can obtain one at http://mozilla.org/MPL/2.0/.
  6. package waLog
  7. import (
  8. "fmt"
  9. "github.com/rs/zerolog"
  10. )
  11. type zeroLogger struct {
  12. mod string
  13. zerolog.Logger
  14. }
  15. // Zerolog wraps a [zerolog.Logger] to implement the [Logger] interface.
  16. //
  17. // Subloggers will be created by setting the `sublogger` field in the log context.
  18. func Zerolog(log zerolog.Logger) Logger {
  19. return &zeroLogger{Logger: log}
  20. }
  21. func (z *zeroLogger) Warnf(msg string, args ...any) { z.Warn().Msgf(msg, args...) }
  22. func (z *zeroLogger) Errorf(msg string, args ...any) { z.Error().Msgf(msg, args...) }
  23. func (z *zeroLogger) Infof(msg string, args ...any) { z.Info().Msgf(msg, args...) }
  24. func (z *zeroLogger) Debugf(msg string, args ...any) { z.Debug().Msgf(msg, args...) }
  25. func (z *zeroLogger) Sub(module string) Logger {
  26. if z.mod != "" {
  27. module = fmt.Sprintf("%s/%s", z.mod, module)
  28. }
  29. return &zeroLogger{mod: module, Logger: z.Logger.With().Str("sublogger", module).Logger()}
  30. }
  31. var _ Logger = &zeroLogger{}