554325746@qq.com
2019-07-22 5a0e125d6b05c42cf26d3e341249be7a2fd80d6d
release without log
4个文件已修改
1个文件已添加
249 ■■■■■ 已修改文件
camera/camera.go 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
logger/logger.go 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main.go 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
test 补丁 | 查看 | 原始文档 | blame | 历史
util/sqlite.go 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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)
logger/logger.go
New file
@@ -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
    }
}
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)
test
Binary files differ
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)
    }
}