package common import ( "log" "os" ) const ( debug = iota info error fatal ) var Log *logger type logger struct { log *log.Logger level int } func initLog() { // log.SetFlags(log.LstdFlags | log.Lshortfile) l := log.New(os.Stderr, "", log.LstdFlags|log.Lshortfile) Log = &logger{log: l, level: logLevel2Int(ServerCfg.LogLevel)} } func logLevel2Int(l string) int { switch l { case "debug": return debug case "info": return info case "error": return error case "fatal": return fatal default: return info } } func (l *logger) Debug(v ...interface{}) { if l.level > debug { return } data := append([]interface{}{"[Debug]"}, v...) l.log.Println(data...) } func (l *logger) Info(v ...interface{}) { if l.level > info { return } data := append([]interface{}{"[Info]"}, v...) l.log.Println(data...) } func (l *logger) Error(v ...interface{}) { if l.level > error { return } data := append([]interface{}{"[Error]"}, v...) l.log.Println(data...) } func (l *logger) Fatal(v ...interface{}) { if l.level > fatal { return } data := append([]interface{}{"[Fatal]"}, v...) l.log.Fatalln(data...) }