package logger import ( "io" "log/slog" "os" "strings" "wucher/internal/config" ) func New(cfg config.LoggingConfig) *slog.Logger { level := parseLevel(cfg.Level) options := &slog.HandlerOptions{Level: level} var handler slog.Handler switch strings.ToLower(strings.TrimSpace(cfg.Format)) { case "text": handler = slog.NewTextHandler(os.Stdout, options) default: handler = slog.NewJSONHandler(os.Stdout, options) } return slog.New(handler) } func NewDiscard() *slog.Logger { return slog.New(slog.NewJSONHandler(io.Discard, nil)) } func parseLevel(raw string) slog.Leveler { switch strings.ToLower(strings.TrimSpace(raw)) { case "debug": return slog.LevelDebug case "warn", "warning": return slog.LevelWarn case "error": return slog.LevelError default: return slog.LevelInfo } }