Files
sablier/app/logger.go
Alexis Couvreur 8844a36e4a refactor(logging): use slog instead of logrus (#501)
Everything uses slog now and the logger is part of every struct
2025-02-02 23:01:51 -05:00

40 lines
835 B
Go

package app
import (
"github.com/lmittmann/tint"
"github.com/sablierapp/sablier/config"
"log/slog"
"os"
"strings"
"time"
)
func setupLogger(config config.Logging) *slog.Logger {
w := os.Stderr
level := parseLogLevel(config.Level)
// create a new logger
logger := slog.New(tint.NewHandler(w, &tint.Options{
Level: level,
TimeFormat: time.Kitchen,
AddSource: true,
}))
return logger
}
func parseLogLevel(level string) slog.Level {
switch strings.ToUpper(level) {
case slog.LevelDebug.String():
return slog.LevelDebug
case slog.LevelInfo.String():
return slog.LevelInfo
case slog.LevelWarn.String():
return slog.LevelWarn
case slog.LevelError.String():
return slog.LevelError
default:
slog.Warn("invalid log level, defaulting to info", slog.String("level", level))
return slog.LevelInfo
}
}