tstor/src/log/nfs.go
2024-01-07 20:09:56 +03:00

173 lines
3.8 KiB
Go

package log
import (
"fmt"
"github.com/rs/zerolog"
nfs "github.com/willscott/go-nfs"
)
var _ nfs.Logger = (*NFSLog)(nil)
type NFSLog struct {
r zerolog.Logger
l zerolog.Logger
}
func NewNFSLog(r zerolog.Logger) nfs.Logger {
return &NFSLog{
r: r,
l: r.Level(zerolog.DebugLevel),
}
}
// Debug implements nfs.Logger.
func (l *NFSLog) Debug(args ...interface{}) {
l.l.Debug().Msg(fmt.Sprint(args...))
}
// Debugf implements nfs.Logger.
func (l *NFSLog) Debugf(format string, args ...interface{}) {
l.l.Debug().Msgf(format, args...)
}
// Error implements nfs.Logger.
func (l *NFSLog) Error(args ...interface{}) {
l.l.Error().Msg(fmt.Sprint(args...))
}
// Errorf implements nfs.Logger.
func (l *NFSLog) Errorf(format string, args ...interface{}) {
l.l.Error().Msgf(format, args...)
}
// Fatal implements nfs.Logger.
func (l *NFSLog) Fatal(args ...interface{}) {
l.l.Fatal().Msg(fmt.Sprint(args...))
}
// Fatalf implements nfs.Logger.
func (l *NFSLog) Fatalf(format string, args ...interface{}) {
l.l.Fatal().Msgf(format, args...)
}
// Info implements nfs.Logger.
func (l *NFSLog) Info(args ...interface{}) {
l.l.Info().Msg(fmt.Sprint(args...))
}
// Infof implements nfs.Logger.
func (l *NFSLog) Infof(format string, args ...interface{}) {
l.l.Info().Msgf(format, args...)
}
// Panic implements nfs.Logger.
func (l *NFSLog) Panic(args ...interface{}) {
l.l.Panic().Msg(fmt.Sprint(args...))
}
// Panicf implements nfs.Logger.
func (l *NFSLog) Panicf(format string, args ...interface{}) {
l.l.Panic().Msgf(format, args...)
}
// Print implements nfs.Logger.
func (l *NFSLog) Print(args ...interface{}) {
l.l.Print(args...)
}
// Printf implements nfs.Logger.
func (l *NFSLog) Printf(format string, args ...interface{}) {
l.l.Printf(format, args...)
}
// Trace implements nfs.Logger.
func (l *NFSLog) Trace(args ...interface{}) {
l.l.Trace().Msg(fmt.Sprint(args...))
}
// Tracef implements nfs.Logger.
func (l *NFSLog) Tracef(format string, args ...interface{}) {
l.l.Trace().Msgf(format, args...)
}
// Warn implements nfs.Logger.
func (l *NFSLog) Warn(args ...interface{}) {
l.l.Warn().Msg(fmt.Sprint(args...))
}
// Warnf implements nfs.Logger.
func (l *NFSLog) Warnf(format string, args ...interface{}) {
l.l.Warn().Msgf(format, args...)
}
// GetLevel implements nfs.Logger.
func (l *NFSLog) GetLevel() nfs.LogLevel {
zl := l.l.GetLevel()
switch zl {
case zerolog.PanicLevel, zerolog.Disabled:
return nfs.PanicLevel
case zerolog.FatalLevel:
return nfs.FatalLevel
case zerolog.ErrorLevel:
return nfs.ErrorLevel
case zerolog.WarnLevel:
return nfs.WarnLevel
case zerolog.InfoLevel:
return nfs.InfoLevel
case zerolog.DebugLevel:
return nfs.DebugLevel
case zerolog.TraceLevel:
return nfs.TraceLevel
}
return nfs.DebugLevel
}
// ParseLevel implements nfs.Logger.
func (l *NFSLog) ParseLevel(level string) (nfs.LogLevel, error) {
switch level {
case "panic":
return nfs.PanicLevel, nil
case "fatal":
return nfs.FatalLevel, nil
case "error":
return nfs.ErrorLevel, nil
case "warn":
return nfs.WarnLevel, nil
case "info":
return nfs.InfoLevel, nil
case "debug":
return nfs.DebugLevel, nil
case "trace":
return nfs.TraceLevel, nil
}
var ll nfs.LogLevel
return ll, fmt.Errorf("invalid log level %q", level)
}
// SetLevel implements nfs.Logger.
func (l *NFSLog) SetLevel(level nfs.LogLevel) {
switch level {
case nfs.PanicLevel:
l.l = l.r.Level(zerolog.PanicLevel)
return
case nfs.FatalLevel:
l.l = l.r.Level(zerolog.FatalLevel)
return
case nfs.ErrorLevel:
l.l = l.r.Level(zerolog.ErrorLevel)
return
case nfs.WarnLevel:
l.l = l.r.Level(zerolog.WarnLevel)
return
case nfs.InfoLevel:
l.l = l.r.Level(zerolog.InfoLevel)
return
case nfs.DebugLevel:
l.l = l.r.Level(zerolog.DebugLevel)
return
case nfs.TraceLevel:
l.l = l.r.Level(zerolog.TraceLevel)
return
}
}