package log import "fmt" type LevelEnabler interface { Enabled(Loglevel) bool } type Loglevel int8 const ( PanicLevel Loglevel = iota FatalLevel ErrorLevel WarnLevel InfoLevel DebugLevel ) func (l Loglevel) String() string { switch l { case DebugLevel: return "debug" case InfoLevel: return "info" case WarnLevel: return "warn" case ErrorLevel: return "error" case PanicLevel: return "panic" case FatalLevel: return "fatal" default: return fmt.Sprintf("Level(%d)", l) } } func (l Loglevel) CapitalString() string { switch l { case DebugLevel: return "DEBUG" case InfoLevel: return "INFO" case WarnLevel: return "WARN" case ErrorLevel: return "ERROR" case PanicLevel: return "PANIC" case FatalLevel: return "FATAL" default: return fmt.Sprintf("LEVEL(%d)", l) } } func (l Loglevel) Enabled(lvl Loglevel) bool { return lvl <= l }