64 lines
838 B
Go
Executable File
64 lines
838 B
Go
Executable File
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
|
|
}
|