67 lines
1.6 KiB
Go
67 lines
1.6 KiB
Go
package logger
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
type Level int8
|
|
|
|
const (
|
|
// TraceLevel level. Designates finer-grained informational events than the Debug.
|
|
TraceLevel Level = iota - 2
|
|
// DebugLevel level. Usually only enabled when debugging. Very verbose logging.
|
|
DebugLevel
|
|
// InfoLevel is the default logging priority.
|
|
// General operational entries about what's going on inside the application.
|
|
InfoLevel
|
|
// WarnLevel level. Non-critical entries that deserve eyes.
|
|
WarnLevel
|
|
// ErrorLevel level. Logs. Used for errors that should definitely be noted.
|
|
ErrorLevel
|
|
// FatalLevel level. Logs and then calls `os.Exit(1)`. highest level of severity.
|
|
FatalLevel
|
|
)
|
|
|
|
func (l Level) String() string {
|
|
switch l {
|
|
case TraceLevel:
|
|
return "trace"
|
|
case DebugLevel:
|
|
return "debug"
|
|
case InfoLevel:
|
|
return "info"
|
|
case WarnLevel:
|
|
return "warn"
|
|
case ErrorLevel:
|
|
return "error"
|
|
case FatalLevel:
|
|
return "fatal"
|
|
}
|
|
return ""
|
|
}
|
|
|
|
// Enabled returns true if the given level is at or above this level.
|
|
func (l Level) Enabled(lvl Level) bool {
|
|
return lvl >= l
|
|
}
|
|
|
|
// GetLevel converts a level string into a logger Level value.
|
|
// returns an error if the input string does not match known values.
|
|
func GetLevel(levelStr string) (Level, error) {
|
|
switch levelStr {
|
|
case TraceLevel.String():
|
|
return TraceLevel, nil
|
|
case DebugLevel.String():
|
|
return DebugLevel, nil
|
|
case InfoLevel.String():
|
|
return InfoLevel, nil
|
|
case WarnLevel.String():
|
|
return WarnLevel, nil
|
|
case ErrorLevel.String():
|
|
return ErrorLevel, nil
|
|
case FatalLevel.String():
|
|
return FatalLevel, nil
|
|
}
|
|
return InfoLevel, fmt.Errorf("unknown Level String: '%s', use InfoLevel", levelStr)
|
|
}
|