package logging import ( "log/slog" "strings" ) // Level represents a logging level. type Level int const ( LevelDebug Level = iota LevelInfo LevelWarn LevelError ) // String returns the string representation of the level. func (l Level) String() string { switch l { case LevelDebug: return "debug" case LevelInfo: return "info" case LevelWarn: return "warn" case LevelError: return "error" default: return "info" } } // SlogLevel converts to slog.Level. func (l Level) SlogLevel() slog.Level { switch l { case LevelDebug: return slog.LevelDebug case LevelInfo: return slog.LevelInfo case LevelWarn: return slog.LevelWarn case LevelError: return slog.LevelError default: return slog.LevelInfo } } // ParseLevel parses a string into a Level. // Returns LevelInfo if the string is not recognized. func ParseLevel(s string) Level { switch strings.ToLower(strings.TrimSpace(s)) { case "debug": return LevelDebug case "info": return LevelInfo case "warn", "warning": return LevelWarn case "error", "err": return LevelError default: return LevelInfo } }