@@ 47,6 47,24 @@ func New(out io.Writer, level Level) *Logger {
return &Logger{Logger: log.New(out, "", log.LstdFlags), level: level}
}
+// ParseLevelFromString parses the level from a string and returns it. If it
+// cannot parse a legitimate level from the level string, it will return
+// ErrInvalidLevel.
+func ParseLevelFromString(level string) (Level, error) {
+ switch strings.ToLower(level) {
+ case "error":
+ return Error, nil
+ case "warning":
+ return Warning, nil
+ case "info":
+ return Info, nil
+ case "debug":
+ return Debug, nil
+ default:
+ return Info, fmt.Errorf("%w: %s", ErrInvalidLevel, level)
+ }
+}
+
// SetLevel sets the logging level of a logger.
func (l *Logger) SetLevel(level Level) {
l.level = level
@@ 56,20 74,9 @@ func (l *Logger) SetLevel(level Level) {
// level. If it cannot parse a legitimate level from the level string, it will
// return ErrInvalidLevel.
func (l *Logger) SetLevelFromString(level string) error {
- switch strings.ToLower(level) {
- case "error":
- l.level = Error
- case "warning":
- l.level = Warning
- case "info":
- l.level = Info
- case "debug":
- l.level = Debug
- default:
- return fmt.Errorf("%w: %s", ErrInvalidLevel, level)
- }
-
- return nil
+ var err error
+ l.level, err = ParseLevelFromString(level)
+ return err
}
// Level returns the current logging level of a logger.