log: allow setting log level dynamically
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
6bd3b2845b
commit
9b22ec35ee
@ -11,17 +11,30 @@ type Logger struct {
|
||||
*slog.Logger
|
||||
}
|
||||
|
||||
const (
|
||||
LevelInfo int = iota
|
||||
LevelDebug
|
||||
LevelWarn
|
||||
LevelError
|
||||
)
|
||||
|
||||
var logger *Logger
|
||||
|
||||
var opts slog.HandlerOptions
|
||||
|
||||
func GetLogger() *Logger {
|
||||
return logger
|
||||
}
|
||||
|
||||
func Init(jsonHandler bool) *Logger {
|
||||
opts = slog.HandlerOptions{
|
||||
Level: slog.LevelInfo,
|
||||
}
|
||||
|
||||
if jsonHandler {
|
||||
logger = &Logger{slog.New(slog.NewJSONHandler(os.Stderr))}
|
||||
logger = &Logger{slog.New(opts.NewJSONHandler(os.Stderr))}
|
||||
} else {
|
||||
logger = &Logger{slog.New(slog.NewTextHandler(os.Stderr))}
|
||||
logger = &Logger{slog.New(opts.NewTextHandler(os.Stderr))}
|
||||
}
|
||||
|
||||
logger.Info("slog logger initialised")
|
||||
@ -29,6 +42,32 @@ func Init(jsonHandler bool) *Logger {
|
||||
return logger
|
||||
}
|
||||
|
||||
// SetLevel allows setting log level and returns the pointer to the re-created
|
||||
// logger.
|
||||
func SetLevel(level int) *Logger {
|
||||
switch level {
|
||||
case LevelInfo:
|
||||
opts.Level = slog.LevelInfo
|
||||
|
||||
case LevelDebug:
|
||||
opts.Level = slog.LevelDebug
|
||||
|
||||
case LevelWarn:
|
||||
opts.Level = slog.LevelWarn
|
||||
|
||||
case LevelError:
|
||||
opts.Level = slog.LevelError
|
||||
}
|
||||
|
||||
if _, ok := logger.Handler().(*slog.JSONHandler); ok {
|
||||
logger = &Logger{slog.New(opts.NewJSONHandler(os.Stderr))}
|
||||
} else {
|
||||
logger = &Logger{slog.New(opts.NewTextHandler(os.Stderr))}
|
||||
}
|
||||
|
||||
return logger
|
||||
}
|
||||
|
||||
func (l *Logger) Debugf(msg string, args ...any) {
|
||||
l.Debug(fmt.Sprintf(msg, args...))
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user