33 lines
681 B
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)
|
|
}
|