67 lines
1.2 KiB
Go
67 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)
|
|
}
|