package core import ( "log/slog" "os" "strings" ) // NewLogger builds a structured logger from the configured level and format. // Unknown values fall back rather than failing: a bad log level must never // stop the server from booting. func NewLogger(level, format string) *slog.Logger { var lvl slog.Level switch strings.ToLower(level) { case "debug": lvl = slog.LevelDebug case "warn", "warning": lvl = slog.LevelWarn case "error": lvl = slog.LevelError default: lvl = slog.LevelInfo } opts := &slog.HandlerOptions{Level: lvl} var h slog.Handler if strings.EqualFold(format, "json") { h = slog.NewJSONHandler(os.Stdout, opts) } else { h = slog.NewTextHandler(os.Stdout, opts) } return slog.New(h) }