58 lines
953 B
Go
58 lines
953 B
Go
package logr
|
|
|
|
import (
|
|
"errors"
|
|
"strings"
|
|
)
|
|
|
|
type Level string
|
|
|
|
const (
|
|
LevelDebug Level = "DEBUG"
|
|
LevelInfo Level = "INFO"
|
|
LevelWarn Level = "WARN"
|
|
LevelError Level = "ERROR"
|
|
LevelFatal Level = "FATAL"
|
|
)
|
|
|
|
var (
|
|
ErrInvalidLevelString = errors.New("invalid level, must be one of DEBUG, INFO, WARN, ERROR or FATAL")
|
|
)
|
|
|
|
func (level Level) Value() int {
|
|
switch level {
|
|
case LevelDebug:
|
|
return 0
|
|
case LevelInfo:
|
|
return 1
|
|
case LevelWarn:
|
|
return 2
|
|
case LevelError:
|
|
return 3
|
|
case LevelFatal:
|
|
return 4
|
|
default:
|
|
return -1
|
|
}
|
|
}
|
|
|
|
func (level Level) IsValid() bool {
|
|
return level.Value() != -1
|
|
}
|
|
|
|
func LevelFromString(level string) (Level, error) {
|
|
switch strings.ToUpper(level) {
|
|
case "DEBUG":
|
|
return LevelDebug, nil
|
|
case "INFO":
|
|
return LevelInfo, nil
|
|
case "WARN":
|
|
return LevelWarn, nil
|
|
case "ERROR":
|
|
return LevelError, nil
|
|
case "FATAL":
|
|
return LevelFatal, nil
|
|
default:
|
|
return LevelDebug, ErrInvalidLevelString
|
|
}
|
|
}
|