cosmos-sdk/log/slog/logger.go
2024-10-24 18:24:31 +00:00

51 lines
1.2 KiB
Go

// Package slog contains a Logger type that satisfies [cosmossdk.io/log.Logger],
// backed by a standard library [*log/slog.Logger].
package slog
import (
"log/slog"
"cosmossdk.io/log"
)
var _ log.Logger = Logger{}
// Logger satisfies [log.Logger] with logging backed by
// an instance of [*slog.Logger].
type Logger struct {
log *slog.Logger
}
// NewCustomLogger returns a Logger backed by an existing slog.Logger instance.
// All logging methods are called directly on the *slog.Logger;
// therefore it is the caller's responsibility to configure message filtering,
// level filtering, output format, and so on.
func NewCustomLogger(log *slog.Logger) Logger {
return Logger{log: log}
}
func (l Logger) Info(msg string, keyVals ...any) {
l.log.Info(msg, keyVals...)
}
func (l Logger) Warn(msg string, keyVals ...any) {
l.log.Warn(msg, keyVals...)
}
func (l Logger) Error(msg string, keyVals ...any) {
l.log.Error(msg, keyVals...)
}
func (l Logger) Debug(msg string, keyVals ...any) {
l.log.Debug(msg, keyVals...)
}
func (l Logger) With(keyVals ...any) log.Logger {
return Logger{log: l.log.With(keyVals...)}
}
// Impl returns l's underlying [*slog.Logger].
func (l Logger) Impl() any {
return l.log
}