44 lines
1.1 KiB
Go
44 lines
1.1 KiB
Go
package logging
|
|
|
|
import (
|
|
"os"
|
|
|
|
"github.com/go-kit/log"
|
|
"github.com/go-kit/log/level"
|
|
"github.com/go-kit/log/term"
|
|
)
|
|
|
|
// Logger records log lines to an output.
|
|
type Logger interface {
|
|
Log(keyvals ...any) error
|
|
}
|
|
|
|
// DefaultLoggers produces helpful base loggers for each level.
|
|
//
|
|
// They write logfmt to standard out, annotated with ANSI colors depending on the level.
|
|
func DefaultLoggers() (debug, info, warn, error Logger) {
|
|
base := term.NewLogger(os.Stdout, log.NewLogfmtLogger, func(keyvals ...any) term.FgBgColor {
|
|
for i := 0; i < len(keyvals)-1; i += 2 {
|
|
if keyvals[i] != "level" {
|
|
continue
|
|
}
|
|
|
|
switch keyvals[i+1] {
|
|
case level.DebugValue():
|
|
return term.FgBgColor{Fg: term.DarkGray}
|
|
case level.InfoValue():
|
|
return term.FgBgColor{Fg: term.Green}
|
|
case level.WarnValue():
|
|
return term.FgBgColor{Fg: term.Yellow}
|
|
case level.ErrorValue():
|
|
return term.FgBgColor{Fg: term.Red}
|
|
}
|
|
}
|
|
|
|
return term.FgBgColor{}
|
|
})
|
|
base = log.NewSyncLogger(base)
|
|
|
|
return level.Debug(base), level.Info(base), level.Warn(base), level.Error(base)
|
|
}
|