Files
scla-unsubscribe/logs.go
Xevion 7d13958532 Add configurable log level to badger logging
needed to clean up logs to just what i wanted
2023-12-28 12:59:41 -06:00

72 lines
1.5 KiB
Go

package main
import (
"fmt"
"os"
"strings"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
)
const timeFormat = "2006-01-02 15:04:05"
var (
standardOut = zerolog.ConsoleWriter{Out: os.Stdout, TimeFormat: timeFormat}
errorOut = zerolog.ConsoleWriter{Out: os.Stderr, TimeFormat: timeFormat}
)
// logSplitter implements zerolog.LevelWriter
type logSplitter struct{}
// Write should not be called
func (l logSplitter) Write(p []byte) (n int, err error) {
return os.Stdout.Write(p)
}
// WriteLevel write to the appropriate output
func (l logSplitter) WriteLevel(level zerolog.Level, p []byte) (n int, err error) {
if level <= zerolog.WarnLevel {
return standardOut.Write(p)
} else {
return errorOut.Write(p)
}
}
type loggingLevel int
const (
DEBUG loggingLevel = iota
INFO
WARNING
ERROR
)
type badgerZerologLogger struct {
level loggingLevel
}
func (l badgerZerologLogger) Errorf(format string, args ...interface{}) {
if l.level <= ERROR {
log.Error().Msg(strings.TrimRight(fmt.Sprintf(format, args...), "\n"))
}
}
func (l badgerZerologLogger) Warningf(format string, args ...interface{}) {
if l.level <= WARNING {
log.Warn().Msg(strings.TrimRight(fmt.Sprintf(format, args...), "\n"))
}
}
func (l badgerZerologLogger) Infof(format string, args ...interface{}) {
if l.level <= INFO {
log.Info().Msg(strings.TrimRight(fmt.Sprintf(format, args...), "\n"))
}
}
func (l badgerZerologLogger) Debugf(format string, args ...interface{}) {
if l.level <= DEBUG {
log.Debug().Msg(strings.TrimRight(fmt.Sprintf(format, args...), "\n"))
}
}