81 lines
1.3 KiB
Go
81 lines
1.3 KiB
Go
package log
|
|
|
|
import "strings"
|
|
|
|
const (
|
|
TraceLevel int = iota + 1
|
|
DebugLevel
|
|
InfoLevel
|
|
WarnLevel
|
|
ErrorLevel
|
|
FatalLevel
|
|
PanicLevel
|
|
)
|
|
|
|
var (
|
|
lvText = map[int]string{
|
|
TraceLevel: "TRACE",
|
|
DebugLevel: "DEBUG",
|
|
InfoLevel: "INFO",
|
|
WarnLevel: "WARN",
|
|
ErrorLevel: "ERROR",
|
|
FatalLevel: "FATAL",
|
|
PanicLevel: "PANIC",
|
|
}
|
|
)
|
|
|
|
type Logger interface {
|
|
SetLevel(int)
|
|
Prefix(string)
|
|
Print(i ...interface{})
|
|
Printf(format string, args ...interface{})
|
|
Debug(i ...interface{})
|
|
Debugf(format string, args ...interface{})
|
|
Info(i ...interface{})
|
|
Infof(format string, args ...interface{})
|
|
Warn(i ...interface{})
|
|
Warnf(format string, args ...interface{})
|
|
Error(i ...interface{})
|
|
Errorf(format string, args ...interface{})
|
|
Fatal(i ...interface{})
|
|
Fatalf(format string, args ...interface{})
|
|
Panic(i ...interface{})
|
|
Panicf(format string, args ...interface{})
|
|
}
|
|
|
|
func getLevelText(lv int) string {
|
|
if s, ok := lvText[lv]; ok {
|
|
return s
|
|
} else {
|
|
return "TRACE"
|
|
}
|
|
}
|
|
|
|
func FormatLevel(lv int) string {
|
|
return getLevelText(lv)
|
|
}
|
|
|
|
func ParseLevel(s string) (lv int) {
|
|
lv = DebugLevel
|
|
s = strings.ToUpper(s)
|
|
for k, v := range lvText {
|
|
if s == v {
|
|
lv = k
|
|
return
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
func ParseLevelWithoutDefault(s string) (lv int) {
|
|
lv = -1
|
|
s = strings.ToUpper(s)
|
|
for k, v := range lvText {
|
|
if s == v {
|
|
lv = k
|
|
return
|
|
}
|
|
}
|
|
return
|
|
}
|