// Package logger provides a configured slog.Logger for the application. package logger import ( "log/slog" "os" "strings" ) // New returns a structured logger. format is "json" or "text" (default json), // level is one of debug|info|warn|error (default info). func New(format, level string) *slog.Logger { opts := &slog.HandlerOptions{Level: parseLevel(level)} var handler slog.Handler switch strings.ToLower(format) { case "text": handler = slog.NewTextHandler(os.Stdout, opts) default: handler = slog.NewJSONHandler(os.Stdout, opts) } return slog.New(handler) } func parseLevel(level string) slog.Level { switch strings.ToLower(level) { case "debug": return slog.LevelDebug case "warn", "warning": return slog.LevelWarn case "error": return slog.LevelError default: return slog.LevelInfo } }