package util import ( "log" "os" ) // Logger logger type Logger struct { FP *os.File Log *log.Logger } var ( deflog *Logger ) // NewDefaultLogger defult logger func NewDefaultLogger(path string) (*Logger, error) { var err error fp := &os.File{} if fp, err = os.OpenFile(path, os.O_RDWR|os.O_APPEND|os.O_CREATE, 0666); err != nil { return nil, err } deflog = &Logger{} deflog.FP = fp deflog.Log = log.New(fp, "[INFO]", log.LstdFlags) return deflog, err } // ReopenDefaultLogger re open default logger func ReopenDefaultLogger(path string) (*Logger, error) { var err error fp := &os.File{} if fp, err = os.OpenFile(path, os.O_RDWR|os.O_APPEND|os.O_CREATE, 0666); err != nil { return nil, err } if deflog == nil { deflog = &Logger{} } fpo := deflog.FP deflog.FP = fp deflog.Log = log.New(fp, "[INFO]", log.LstdFlags) fpo.Close() return deflog, err } // CloseDefaultLogger close func CloseDefaultLogger() error { return deflog.FP.Close() } // LogInfo log info func LogInfo(v ...interface{}) { deflog.Log.SetPrefix("[INFO]") deflog.Log.Println(v...) } // LogDebug log debug func LogDebug(v ...interface{}) { deflog.Log.SetPrefix("[DEBUG]") deflog.Log.Println(v...) } // NewLogger new func NewLogger(path string) (logger *Logger, err error) { fp := &os.File{} if fp, err = os.OpenFile(path, os.O_RDWR|os.O_APPEND|os.O_CREATE, os.ModePerm); err != nil { return } logger.FP = fp logger.Log = log.New(fp, "[INFO]", log.Ldate|log.Ltime) return } // Close close func (logger Logger) Close() error { return logger.FP.Close() } // Info log info func (logger Logger) Info(v ...interface{}) { logger.Log.SetPrefix("[INFO]") logger.Log.Println(v...) } // Debug log debug func (logger Logger) Debug(v ...interface{}) { logger.Log.SetPrefix("[DEBUG]") logger.Log.Println(v...) }