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 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 }