diff --git a/main.go b/main.go index fbc18a9..d133cd7 100644 --- a/main.go +++ b/main.go @@ -2,6 +2,8 @@ package logger import ( "fmt" + "errors" + "strings" ) // LogLevel represents a log level @@ -26,6 +28,21 @@ var logLevelNames = [...]string{ LogLevelPanic: "panic", } +// ErrNoSuchLevel is returned when ParseLogLevel cannot find +// a log level corresponding to the provided string +var ErrNoSuchLevel = errors.New("no such log level") + +// ParseLogLevel parses a string representing a log level +// and returns the proper log level +func ParseLogLevel(s string) (LogLevel, error) { + for lvl, name := range logLevelNames { + if strings.EqualFold(name, s) { + return LogLevel(lvl), nil + } + } + return 254, ErrNoSuchLevel +} + // Logger represents a logger type Logger interface { // NoPanic prevents the logger from panicking on panic events