rclone/vendor/github.com/pengsrc/go-shared/log/level.go
2018-01-16 13:20:59 +00:00

68 lines
1.2 KiB
Go

package log
import (
"fmt"
"strings"
)
// Level defines log levels.
type Level uint8
// String returns name of the level.
func (l Level) String() string {
switch l {
case MuteLevel:
return "MUTE"
case FatalLevel:
return "FATAL"
case PanicLevel:
return "PANIC"
case ErrorLevel:
return "ERROR"
case WarnLevel:
return "WARN"
case InfoLevel:
return "INFO"
case DebugLevel:
return "DEBUG"
}
return ""
}
const (
// MuteLevel disables the logger.
MuteLevel Level = iota
// FatalLevel defines fatal log level.
FatalLevel
// PanicLevel defines panic log level.
PanicLevel
// ErrorLevel defines error log level.
ErrorLevel
// WarnLevel defines warn log level.
WarnLevel
// InfoLevel defines info log level.
InfoLevel
// DebugLevel defines debug log level.
DebugLevel
)
// ParseLevel takes a string level and returns the log level constant.
func ParseLevel(level string) (Level, error) {
switch strings.ToUpper(level) {
case "FATAL":
return FatalLevel, nil
case "PANIC":
return PanicLevel, nil
case "ERROR":
return ErrorLevel, nil
case "WARN":
return WarnLevel, nil
case "INFO":
return InfoLevel, nil
case "DEBUG":
return DebugLevel, nil
}
return MuteLevel, fmt.Errorf(`"%q" is not a valid log Level`, level)
}