reddit-scrapper/internal/logging/logger.go

33 lines
681 B
Go

package logging
import (
"log/slog"
"os"
"strings"
)
func parseLevel(s string) slog.Level {
s = strings.ToUpper(strings.TrimSpace(s))
switch s {
case "TRACE":
return slog.LevelDebug
case "DEBUG":
return slog.LevelDebug
case "INFO":
return slog.LevelInfo
case "WARN", "WARNING":
return slog.LevelWarn
case "ERROR":
return slog.LevelError
default:
return slog.LevelInfo
}
}
// Init initializes a global logger and returns it. Level is a string like "INFO" or "DEBUG".
func Init(level string) *slog.Logger {
lvl := parseLevel(level)
handler := slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{AddSource: false, Level: lvl})
return slog.New(handler)
}