package logger // "log" const ( //go-logger version _VER string = "1.0.3" ) type LEVEL int32 type UNIT int64 type _ROLLTYPE int //dailyRolling ,rollingFile const _DATEFORMAT = "2006-01-02" var logLevel LEVEL = 1 const ( _ = iota KB UNIT = 1 << (iota * 10) MB GB TB ) const ( ALL LEVEL = iota DEBUG INFO WARN ERROR FATAL OFF ) const ( _DAILY _ROLLTYPE = iota _ROLLFILE ) func SetConsole(isConsole bool) { defaultlog.setConsole(isConsole) } func SetLevel(_level LEVEL) { defaultlog.setLevel(_level) } func SetFormat(logFormat string) { defaultlog.setFormat(logFormat) } func SetRollingFile(fileDir, fileName string, maxNumber int32, maxSize int64, _unit UNIT) { // maxFileCount = maxNumber // maxFileSize = maxSize * int64(_unit) // RollingFile = true // dailyRolling = false // mkdirlog(fileDir) // logObj = &_FILE{dir: fileDir, filename: fileName, isCover: false, mu: new(sync.RWMutex)} // logObj.mu.Lock() // defer logObj.mu.Unlock() // for i := 1; i <= int(maxNumber); i++ { // if isExist(fileDir + "/" + fileName + "." + strconv.Itoa(i)) { // logObj._suffix = i // } else { // break // } // } // if !logObj.isMustRename() { // logObj.logfile, _ = os.OpenFile(fileDir+"/"+fileName, os.O_RDWR|os.O_APPEND|os.O_CREATE, 0666) // logObj.lg = log.New(logObj.logfile, "", log.Ldate|log.Ltime|log.Lshortfile) // } else { // logObj.rename() // } // go fileMonitor() defaultlog.setRollingFile(fileDir, fileName, maxNumber, maxSize, _unit) } func SetRollingDaily(fileDir, fileName string) { // RollingFile = false // dailyRolling = true // t, _ := time.Parse(_DATEFORMAT, time.Now().Format(_DATEFORMAT)) // mkdirlog(fileDir) // logObj = &_FILE{dir: fileDir, filename: fileName, _date: &t, isCover: false, mu: new(sync.RWMutex)} // logObj.mu.Lock() // defer logObj.mu.Unlock() // if !logObj.isMustRename() { // logObj.logfile, _ = os.OpenFile(fileDir+"/"+fileName, os.O_RDWR|os.O_APPEND|os.O_CREATE, 0666) // logObj.lg = log.New(logObj.logfile, "", log.Ldate|log.Ltime|log.Lshortfile) // } else { // logObj.rename() // } defaultlog.setRollingDaily(fileDir, fileName) } //func console(s ...interface{}) { // if consoleAppender { // _, file, line, _ := runtime.Caller(2) // short := file // for i := len(file) - 1; i > 0; i-- { // if file[i] == '/' { // short = file[i+1:] // break // } // } // file = short // log.Println(file, strconv.Itoa(line), s) // } //} //func catchError() { // if err := recover(); err != nil { // log.Println("err", err) // } //} func Debug(v ...interface{}) { // if dailyRolling { // fileCheck() // } // defer catchError() // if logObj != nil { // logObj.mu.RLock() // defer logObj.mu.RUnlock() // } // if logLevel <= DEBUG { // if logObj != nil { // logObj.lg.Output(2, fmt.Sprintln("debug", v)) // } // console("debug", v) // } defaultlog.debug(v...) } func Info(v ...interface{}) { // if dailyRolling { // fileCheck() // } // defer catchError() // if logObj != nil { // logObj.mu.RLock() // defer logObj.mu.RUnlock() // } // if logLevel <= INFO { // if logObj != nil { // if format == "" { // logObj.lg.Output(2, fmt.Sprintln("info", v)) // } else { // logObj.lg.Output(2, fmt.Sprintf(format, v...)) // } // } // console("info", v) // } defaultlog.info(v...) } func Warn(v ...interface{}) { // if dailyRolling { // fileCheck() // } // defer catchError() // if logObj != nil { // logObj.mu.RLock() // defer logObj.mu.RUnlock() // } // if logLevel <= WARN { // if logObj != nil { // logObj.lg.Output(2, fmt.Sprintln("warn", v)) // } // console("warn", v) // } defaultlog.warn(v...) } func Error(v ...interface{}) { // if dailyRolling { // fileCheck() // } // defer catchError() // if logObj != nil { // logObj.mu.RLock() // defer logObj.mu.RUnlock() // } // if logLevel <= ERROR { // if logObj != nil { // logObj.lg.Output(2, fmt.Sprintln("error", v)) // } // console("error", v) // } defaultlog.error(v...) } func Fatal(v ...interface{}) { // if dailyRolling { // fileCheck() // } // defer catchError() // if logObj != nil { // logObj.mu.RLock() // defer logObj.mu.RUnlock() // } // if logLevel <= FATAL { // if logObj != nil { // logObj.lg.Output(2, fmt.Sprintln("fatal", v)) // } // console("fatal", v) // } defaultlog.fatal(v...) } func SetLevelFile(level LEVEL, dir, fileName string) { defaultlog.setLevelFile(level, dir, fileName) } //func isMustRename() bool { // if dailyRolling { // t, _ := time.Parse(_DATEFORMAT, time.Now().Format(_DATEFORMAT)) // if t.After(*f._date) { // return true // } // } else { // if maxFileCount > 1 { // if fileSize(f.dir+"/"+f.filename) >= maxFileSize { // return true // } // } // } // return false //} //func rename() { // if dailyRolling { // fn := f.dir + "/" + f.filename + "." + f._date.Format(_DATEFORMAT) // if !isExist(fn) && f.isMustRename() { // if f.logfile != nil { // f.logfile.Close() // } // err := os.Rename(f.dir+"/"+f.filename, fn) // if err != nil { // f.lg.Println("rename err", err.Error()) // } // t, _ := time.Parse(_DATEFORMAT, time.Now().Format(_DATEFORMAT)) // f._date = &t // f.logfile, _ = os.Create(f.dir + "/" + f.filename) // f.lg = log.New(logObj.logfile, "\n", log.Ldate|log.Ltime|log.Lshortfile) // } // } else { // f.coverNextOne() // } //} //func nextSuffix() int { // return int(f._suffix%int(maxFileCount) + 1) //} //func coverNextOne() { // f._suffix = f.nextSuffix() // if f.logfile != nil { // f.logfile.Close() // } // if isExist(f.dir + "/" + f.filename + "." + strconv.Itoa(int(f._suffix))) { // os.Remove(f.dir + "/" + f.filename + "." + strconv.Itoa(int(f._suffix))) // } // os.Rename(f.dir+"/"+f.filename, f.dir+"/"+f.filename+"."+strconv.Itoa(int(f._suffix))) // f.logfile, _ = os.Create(f.dir + "/" + f.filename) // f.lg = log.New(logObj.logfile, "\n", log.Ldate|log.Ltime|log.Lshortfile) //} //func fileMonitor() { // timer := time.NewTicker(1 * time.Second) // for { // select { // case <-timer.C: // fileCheck() // } // } //} //func fileCheck() { // defer func() { // if err := recover(); err != nil { // log.Println(err) // } // }() // if logObj != nil && logObj.isMustRename() { // logObj.mu.Lock() // defer logObj.mu.Unlock() // logObj.rename() // } //}