From 76ee1245a5be00553a4971035c04fc057177be97 Mon Sep 17 00:00:00 2001 From: liuxiaolong <736321739@qq.com> Date: 星期一, 08 七月 2019 14:03:33 +0800 Subject: [PATCH] get faceFea from FaceDetect sdk --- extend/logger/logger.go | 216 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 216 insertions(+), 0 deletions(-) diff --git a/extend/logger/logger.go b/extend/logger/logger.go index 90c66f6..73b919c 100644 --- a/extend/logger/logger.go +++ b/extend/logger/logger.go @@ -1 +1,217 @@ package logger + +import ( + "fmt" + "log" + "os" + "os/exec" + "strings" + "time" +) + +const ( + PanicLevel int = iota + FatalLevel + ErrorLevel + WarnLevel + InfoLevel + DebugLevel +) + +const ( + color_red = uint8(iota + 91) + color_green // 缁� + color_yellow // 榛� + color_blue // 钃� + color_magenta // 娲嬬孩 +) + +const ( + fatalPrefix = "[FATAL] " + errorPrefix = "[ERROR] " + warnPrefix = "[WARN] " + infoPrefix = "[INFO] " + debugPrefix = "[DEBUG] " +) + +const ( + ByDay int = iota + ByWeek + ByMonth + BySize +) + +type LogFile struct { + level int // 鏃ュ織绛夌骇 + saveMode int // 淇濆瓨妯″紡 + saveDays int // 鏃ュ織淇濆瓨澶╂暟 + logTime int64 // + fileName string // 鏃ュ織鏂囦欢鍚� + filesize int64 // 鏂囦欢澶у皬, 闇�瑕佽缃� saveMode 涓� BySize 鐢熸晥 + fileFd *os.File +} + +var logFile LogFile + +func init() { + logFile.saveMode = ByDay // 榛樿鎸夊ぉ淇濆瓨 + logFile.saveDays = 15 // 榛樿淇濆瓨涓夊ぉ鐨� + logFile.level = ErrorLevel + logFile.filesize = 1024 * 1024 * 10 // 榛樿10M锛� 闇�瑕佽缃� saveMode 涓� BySize +} + +func Config(logFolder string, level int) { + logFile.fileName = logFolder + logFile.level = level + + log.SetOutput(logFile) + //log.SetFlags(log.Lmicroseconds | log.Lshortfile) + log.SetFlags(log.Ldate | log.Ltime) +} +func GetLogFile() (*LogFile) { + return &logFile +} + +func SetLevel(level int) { + logFile.level = level +} + +func SetSaveMode(saveMode int) { + logFile.saveMode = saveMode +} + +func SetSaveDays(saveDays int) { + logFile.saveDays = saveDays +} + +func SetSaveSize(saveSize int64) { + logFile.filesize = saveSize +} + +func Debug(args ...interface{}) { + if logFile.level >= DebugLevel { + log.SetPrefix(blue(debugPrefix)) + _ = log.Output(2, fmt.Sprintln(args...)) + } +} + +func Info(args ...interface{}) { + if logFile.level >= InfoLevel { + log.SetPrefix(green(infoPrefix)) + _ = log.Output(2, fmt.Sprintln(args...)) + } +} + +func Warn(args ...interface{}) { + if logFile.level >= WarnLevel { + log.SetPrefix(magenta(warnPrefix)) + _ = log.Output(2, fmt.Sprintln(args...)) + } +} + +func Error(args ...interface{}) { + if logFile.level >= ErrorLevel { + log.SetPrefix(red(errorPrefix)) + _ = log.Output(2, fmt.Sprintln(args...)) + } +} + +func Fatal(args ...interface{}) { + if logFile.level >= FatalLevel { + log.SetPrefix(red(fatalPrefix)) + _ = log.Output(2, fmt.Sprintln(args...)) + } +} + +func GetRedPrefix(s string) string { + return fmt.Sprintf("\x1b[%dm%s\x1b[0m", color_red, s) +} + +func red(s string) string { + return fmt.Sprintf("\x1b[%dm%s\x1b[0m", color_red, s) +} + +func green(s string) string { + return fmt.Sprintf("\x1b[%dm%s\x1b[0m", color_green, s) +} + +func yellow(s string) string { + return fmt.Sprintf("\x1b[%dm%s\x1b[0m", color_yellow, s) +} + +func blue(s string) string { + return fmt.Sprintf("\x1b[%dm%s\x1b[0m", color_blue, s) +} + +func magenta(s string) string { + return fmt.Sprintf("\x1b[%dm%s\x1b[0m", color_magenta, s) +} + +func (me LogFile) Write(buf []byte) (n int, err error) { + if me.fileName == "" { + fmt.Printf("consol: %s", buf) + return len(buf), nil + } + + switch logFile.saveMode { + case BySize: + fileInfo, err := os.Stat(logFile.fileName) + if err != nil { + logFile.createLogFile() + logFile.logTime = time.Now().Unix() + }else { + filesize:= fileInfo.Size(); + if logFile.fileFd == nil || + filesize > logFile.filesize { + logFile.createLogFile() + logFile.logTime = time.Now().Unix() + } + } + default: // 榛樿鎸夊ぉ ByDay + if logFile.logTime+3600 < time.Now().Unix() { + logFile.createLogFile() + logFile.logTime = time.Now().Unix() + } + } + + if logFile.fileFd == nil { + fmt.Printf("log fileFd is nil !\n") + return len(buf), nil + } + + return logFile.fileFd.Write(buf) +} + +func (me *LogFile) createLogFile() { + logdir := "./" + if index := strings.LastIndex(me.fileName, "/"); index != -1 { + logdir = me.fileName[0:index] + "/" + os.MkdirAll(me.fileName[0:index], os.ModePerm) + } + + now := time.Now() + filename := fmt.Sprintf("%s_%04d%02d%02d", + me.fileName, now.Year(), now.Month(), now.Day()) + if err := os.Rename(me.fileName, filename); err == nil { + go func() { + tarCmd := exec.Command("tar", "-zcf", filename+".tar.gz", filename, "--remove-files") + tarCmd.Run() + + rmCmd := exec.Command("/bin/sh", "-c", + "find "+logdir+` -type f -mtime +` +string(logFile.saveDays)+ ` -exec rm {} \;`) + rmCmd.Run() + }() + } + + for index := 0; index < 10; index++ { + if fd, err := os.OpenFile(me.fileName, os.O_CREATE|os.O_APPEND|os.O_WRONLY, os.ModeExclusive); nil == err { + me.fileFd.Sync() + me.fileFd.Close() + me.fileFd = fd + break + }else { + fmt.Println("Open logfile error! err: ", err.Error()) + } + me.fileFd = nil + } +} \ No newline at end of file -- Gitblit v1.8.0