package logb import ( "sync" ) const ( cError = iota cWarn cInfo cDebug cVerbose ) var ( ERROR = Level{Level: cError} WARN = Level{Level: cWarn} INFO = Level{Level: cInfo} DEBUG = Level{Level: cDebug} VERBOSE = Level{Level: cVerbose} ) type Level struct { Level int Lock sync.Mutex } func NewLevel() *Level { return &Level{ Level: cInfo, } } func (l *Level) Set(v Level) { l.Lock.Lock() defer l.Lock.Unlock() l.Level = v.Level } func (l *Level) Get(v Level) int { return l.Level } func (l Level) Should(v Level) bool { return l.Level >= v.Level } func (l Level) String() string { s := "undefined" switch l.Level { case ERROR.Level: s = "ERROR" case WARN.Level: s = "WARN" case INFO.Level: s = "INFO" case DEBUG.Level: s = "DEBUG" case VERBOSE.Level: s = "VERBOSE" } return s }