From 5a0e125d6b05c42cf26d3e341249be7a2fd80d6d Mon Sep 17 00:00:00 2001
From: 554325746@qq.com <554325746@qq.com>
Date: 星期一, 22 七月 2019 13:39:28 +0800
Subject: [PATCH] release without log
---
logger/logger.go | 217 +++++++++++++++++++++++++++++++++++++++++++
test | 0
main.go | 13 ++
util/sqlite.go | 8 +
camera/camera.go | 11 +
5 files changed, 246 insertions(+), 3 deletions(-)
diff --git a/camera/camera.go b/camera/camera.go
index db904fc..5719fd4 100644
--- a/camera/camera.go
+++ b/camera/camera.go
@@ -13,7 +13,9 @@
"context"
"fmt"
"sync"
- // "time"
+ //"time"
+ "os"
+
)
var SocketManage sync.Map
@@ -52,6 +54,7 @@
fmt.Println("create socket error")
return
}
+
go Recv(socketlisten, remote)
}
}
@@ -79,6 +82,8 @@
for key, op := range cameraChanDel {
if op == "add" {
CreateCamera(key, "camera")
+ fmt.Println("add new camera id=========================")
+ os.Exit(1)
} else {
if sock, ok := SocketManage.Load(key); ok {
if socket, sok := sock.(SocketContext); sok {
@@ -140,8 +145,9 @@
// fmt.Println(imagemsg.Cid)
switch remote {
case "camera":
+ fmt.Printf("=== cid: has %d task\n", len(GetAlltask(imagemsg.Cid)))
for _, taskid := range GetAlltask(imagemsg.Cid) {
- // time.Sleep(5 * time.Second)
+ //time.Sleep(5 * time.Second)
fmt.Println("id: ", imagemsg.Cid, " taskid: ", taskid)
Taskdolist(imagemsg.Cid, "", taskid, recvmessage)
}
@@ -169,6 +175,7 @@
func Taskdolist(cid string, caddr string, taskid string, data []byte) {
// 鏁版嵁鍔犲伐(鎵撴爣绛�)
+ fmt.Printf("taskid %s: has %d data[]byte\n", taskid, len(data))
sdkmsg := sdk.SdkData(cid, caddr, taskid, data)
if sdkmsg.Tasklab == nil {
fmt.Printf("cid:%s 娌℃湁浠诲姟%s\n", cid, taskid)
diff --git a/logger/logger.go b/logger/logger.go
new file mode 100644
index 0000000..92f2be2
--- /dev/null
+++ b/logger/logger.go
@@ -0,0 +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 = 7 // 榛樿淇濆瓨涓夊ぉ鐨�
+ logFile.level = DebugLevel
+ 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
diff --git a/main.go b/main.go
index ffa4372..9a31d0d 100644
--- a/main.go
+++ b/main.go
@@ -12,6 +12,7 @@
"github.com/long/test/sdk"
"github.com/long/test/tasktag"
"github.com/long/test/util"
+ //"github.com/long/test/logger"
// "github.com/long/test/camera"
// "github.com/long/test/sdk"
@@ -20,7 +21,17 @@
var initchan = make(chan bool)
-func main() {
+//func init(){
+// var logFile = "./taskpubsub.log"
+// var logSaveDays = 15
+//
+// // 鏃ュ織鍒濆鍖�
+// logger.Config(logFile, logger.DebugLevel)
+// logger.SetSaveDays(logSaveDays)
+// logger.Info("loginit success !")
+//}
+
+func main() {
flag.Parse()
time.Sleep(time.Second)
diff --git a/test b/test
index fa84cee..b694585 100755
--- a/test
+++ b/test
Binary files differ
diff --git a/util/sqlite.go b/util/sqlite.go
index e9b9021..958aff5 100644
--- a/util/sqlite.go
+++ b/util/sqlite.go
@@ -8,6 +8,7 @@
"basic.com/dbapi.git"
"github.com/gogo/protobuf/proto"
"basic.com/valib/gopherdiscovery.git"
+ "os"
)
/*************************
@@ -67,21 +68,25 @@
switch newsdkmsg.Table {
case protomsg.TableChanged_T_Camera:
fmt.Println("update camera")
+ os.Exit(1)
CameraIds = camval.FindAll()
Cameraflag <- true
case protomsg.TableChanged_T_CameraTask:
fmt.Println("update cameratask")
+ os.Exit(1)
CameraTasks = camval.FindAllCameraAndTask()
fmt.Println("update cameratask finished!")
case protomsg.TableChanged_T_TaskSdk:
fmt.Println("update tasksdk")
+ os.Exit(1)
TaskSdks = taskapi.FindAllTaskSdkRun()
TaskSdkflag <- true
case protomsg.TableChanged_T_Sdk:
fmt.Println("update sdk")
+ os.Exit(1)
Sdklist = sdkapi.GetAllSdkIds()
Sdkinfos = sdkapi.FindAll("")
Sdkflag <- true
@@ -89,7 +94,9 @@
default:
fmt.Println("unknow type operation")
+ os.Exit(1)
}
+
fmt.Println(newsdkmsg)
}
@@ -103,5 +110,6 @@
peers, _ := clientOne.Peers()
for x := range peers {
Getdata(x)
+ os.Exit(1)
}
}
--
Gitblit v1.8.0