From 0e441dc5137776776d367f4075f7a2f62ae03628 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期四, 07 十一月 2019 16:58:14 +0800
Subject: [PATCH] merge V1.0
---
insertdata/EsClient.go | 2
logger/logger.go | 225 ++++++++++++++++++++++++++++
insertdata/insertDataToEs.go | 40 ----
ruleserver/server.go | 2
ruleserver/ruleToformula.go | 30 +-
main.go | 4
ruleserver/personTrack.go | 134 +++++++++-------
labelFilter/readyDataForLabel.go | 2
labelFilter/ruleForLabel.go | 20 +-
ruleserver/readyDataForRule.go | 16 +-
ruleserver/timeTicker.go | 2
11 files changed, 345 insertions(+), 132 deletions(-)
diff --git a/insertdata/EsClient.go b/insertdata/EsClient.go
index 6ecd30a..c83eb87 100644
--- a/insertdata/EsClient.go
+++ b/insertdata/EsClient.go
@@ -7,7 +7,7 @@
"io"
"io/ioutil"
"net/http"
- "basic.com/valib/logger.git"
+ "ruleprocess/logger"
"strconv"
"strings"
"time"
diff --git a/insertdata/insertDataToEs.go b/insertdata/insertDataToEs.go
index ba89ac2..c857895 100644
--- a/insertdata/insertDataToEs.go
+++ b/insertdata/insertDataToEs.go
@@ -1,7 +1,7 @@
package insertdata
import (
- "basic.com/valib/logger.git"
+ "ruleprocess/logger"
"encoding/base64"
"encoding/json"
"errors"
@@ -127,30 +127,6 @@
rules []structure.Result
}
-// 寰�ES鎻掓暟鎹�
-//func InsertToEs(msg ruleserver.ResultMsg) {
-// var timeLabel string
-// // 鐩存帴浠庤鍒欑殑鏍囩鏁版嵁閲屾嬁绗﹀悎瑙勫垯鐨勪汉鑴哥粨鏋�
-// if msg.RuleResult["timeLabel"] != nil {
-// timeLabel = msg.RuleResult["timeLabel"].(string)
-// }
-// logger.Debug("鎻掑叆鏁版嵁鍓嶇湅鐪嬫姤璀︽爣蹇椾綅锛�", timeLabel)
-// if timeLabel == "01" { // 鏃犲畾鏃跺櫒鐘舵�佽鎻掑叆鐨勬姤璀︽暟鎹�
-// InsertFace(msg)
-// flag := ruleserver.BodyIsSame(msg.SdkMessage)
-// if !flag {
-// InsertYolo(msg)
-// }
-// }
-// if timeLabel == "10" { // 瀹氭椂鍣ㄧ姸鎬佽鎻掑叆鐨勯甯ф姤璀︽暟鎹�傝繛甯︾潃瀹氭椂鍣ㄥ紑鍚椂鐨勯偅甯�
-// InsertFace(msg)
-// InsertYolo(msg)
-// }
-// //if timeLabel == "12" { // 骞堕潪鎶ヨ鏁版嵁锛屽彧鏄姸鎬佹敼鍙樼殑鏁版嵁
-// // //ChangeStatusFace(msg)
-// // ChangeStatusYolo(msg)
-// //}
-//}
func InsertToEs(msg structure.ResultMsg) {
defer func() {
if err := recover(); err != nil {
@@ -186,7 +162,7 @@
panic("瑙e帇缂╁浘鐗囨椂鍑虹幇閿欒")
}
alarmRules := []AlarmRule{}
- logger.Warn("浜鸿劯id涓猴細", face.Id, "浜鸿劯鐨勮鍒欓暱搴︿负锛�", len(face.rules))
+ //logger.Warn("浜鸿劯id涓猴細", face.Id, "浜鸿劯鐨勮鍒欓暱搴︿负锛�", len(face.rules))
//os.Exit(1)
for _, faceResult := range face.rules {
alarm := ChangeToString(faceResult.DefenceState, faceResult.AlarmLevel)
@@ -228,7 +204,6 @@
target.TargetScore = face.Score
target.TargetLocation = Points{TopLeft:Point{face.Location.X,face.Location.Y},BottomRight:Point{face.Location.X+face.Location.Width,face.Location.Y+face.Location.Height}}
//logger.Info("浜鸿劯鐨刬d:",strconv.FormatUint(face.Id, 10))
- logger.Info("%%%%%%%%%%%%%%%%%%%%%鐩爣淇℃伅锛�",*target)
pervideo := PerVideoPicture{
msg.Push.PushId,
msg.Cid,
@@ -296,12 +271,12 @@
func hebingFace(faces []*FaceAndRules, faceResult structure.FaceResult) []*FaceAndRules {
for _, arg := range faceResult.Args {
// 鎷垮埌姣忎竴寮犱汉鑴�
- logger.Info("褰掔疆浜鸿劯鏃剁浉浼艰�呯殑鏁伴噺锛�", len(arg.Liker))
+ //logger.Info("褰掔疆浜鸿劯鏃剁浉浼艰�呯殑鏁伴噺锛�", len(arg.Liker))
flag := false
for _, face := range faces {
- for _, lik := range face.Liker {
- logger.Warn("--------鍚堝苟浜鸿劯鏃剁浉浼艰�咃細", lik.PersonId, lik.TableName)
- }
+ //for _, lik := range face.Liker {
+ // //logger.Warn("--------鍚堝苟浜鸿劯鏃剁浉浼艰�咃細", lik.PersonId, lik.TableName)
+ //}
if arg.Id == face.Id {
flag = true
face.rules = append(face.rules, faceResult.Result)
@@ -382,7 +357,7 @@
// 瑁呴厤鐩爣淇℃伅鏁版嵁
for _,target := range yoloResult.Location {
// 鍘婚噸娣诲姞
- logger.Info("瑁呴厤鍓嶇殑鍘熷鏁版嵁鏄細",target)
+ //logger.Info("瑁呴厤鍓嶇殑鍘熷鏁版嵁鏄細",target)
var flag = true
for _,selectTarget := range targetInfos {
if strconv.FormatUint(target.TargetId, 10) == selectTarget.TargetId {
@@ -442,7 +417,6 @@
// 涓嶆槸鎶ヨ鏁版嵁涓嶅瓨
return
}
-
if resp["fileUrl"] != nil {
url = append(url, resp["fileUrl"].(string))
//esDataId := uuid.NewV4().String()
diff --git a/labelFilter/readyDataForLabel.go b/labelFilter/readyDataForLabel.go
index 5c792e1..28b5233 100644
--- a/labelFilter/readyDataForLabel.go
+++ b/labelFilter/readyDataForLabel.go
@@ -1,7 +1,7 @@
package labelFilter
import (
- "basic.com/valib/logger.git"
+ "ruleprocess/logger"
"ruleprocess/cache"
"ruleprocess/structure"
"time"
diff --git a/labelFilter/ruleForLabel.go b/labelFilter/ruleForLabel.go
index e8b0193..bb4f9a5 100644
--- a/labelFilter/ruleForLabel.go
+++ b/labelFilter/ruleForLabel.go
@@ -21,7 +21,7 @@
// 瑁呴厤鎴愯嚜宸卞彲浠ヨ瘑鍒殑鏁版嵁
label := new(Label)
label.DataFormatToLabel(msg)
- logger.Info("label鐨勪俊鎭細", label.CameraName, label.DefenceLevel, label.Time)
+ //logger.Info("label鐨勪俊鎭細", label.CameraName, label.DefenceLevel, label.Time)
if label.CameraName == "" {
logger.Error("鏃犳晥鏁版嵁锛岀洿鎺ヨ繑鍥�")
return
@@ -29,7 +29,7 @@
//鎷垮埌鎵�鏈夎鍒欑粍
var api dbapi.EventPushApi
b, allRules := api.FindAllDetails()
- logger.Info("鏌ョ湅鎵�鏈夎鍒欑粍锛�", allRules)
+ //logger.Info("鏌ョ湅鎵�鏈夎鍒欑粍锛�", allRules)
if !b {
logger.Error("鏌ヨ鏃堕棿鎺ㄩ�佽鍒欏け璐ワ紒")
}
@@ -100,7 +100,7 @@
// 鏄惁绗﹀悎鏃堕棿瑙勫垯
func timeJudge(label *Label, groupRule protomsg.EventPush) bool {
timeNow := time.Now().Format("2006-01-02 15:04:05")
- logger.Info("鏍囩杩囨护鍣ㄨ捣濮嬫椂闂翠负锛�",groupRule.TimeStart,groupRule.TimeEnd)
+ //logger.Info("鏍囩杩囨护鍣ㄨ捣濮嬫椂闂翠负锛�",groupRule.TimeStart,groupRule.TimeEnd)
flag1 := isBefore(groupRule.TimeStart, timeNow)
flag2 := isBefore(timeNow, groupRule.TimeEnd)
if flag1 && flag2 {
@@ -137,7 +137,7 @@
if rule.TopicArg == "addr" {
formula = "'" + label.CameraAddr + "'" + rule.Operator + "'" + rule.RuleValue + "'"
}
- logger.Info("-------鎵撳嵃鎽勫儚鏈鸿鍒欏叕寮忥細",formula)
+ //logger.Info("-------鎵撳嵃鎽勫儚鏈鸿鍒欏叕寮忥細",formula)
expression, err := govaluate.NewEvaluableExpression(formula);
if err != nil {
logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒", formula)
@@ -152,7 +152,7 @@
logger.Info("绗﹀悎鎽勫儚鏈鸿鍒�!")
return "true"
}
- logger.Info("涓嶇鍚堟憚鍍忔満瑙勫垯!")
+ //logger.Info("涓嶇鍚堟憚鍍忔満瑙勫垯!")
return "false"
}
@@ -174,7 +174,7 @@
for _, liker := range arg.Liker {
formula := "'" + liker.TableId + "'" + rule.Operator + "'" + rule.RuleValue + "'"
expression, err := govaluate.NewEvaluableExpression(formula);
- logger.Info("-------鎵撳嵃搴曞簱瑙勫垯鍏紡锛�",formula)
+ //logger.Info("-------鎵撳嵃搴曞簱瑙勫垯鍏紡锛�",formula)
if err != nil {
logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒", formula)
return "false"
@@ -214,7 +214,7 @@
// 鍏朵粬杩欎釜鍊煎厛杩欎箞澶勭悊
return "true"
}
- logger.Info("-------鎵撳嵃浜哄憳瑙勫垯鍏紡锛�",formula)
+ //logger.Info("-------鎵撳嵃浜哄憳瑙勫垯鍏紡锛�",formula)
expression, err := govaluate.NewEvaluableExpression(formula);
if err != nil {
logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒", formula)
@@ -238,7 +238,7 @@
}
} else {
formula := strconv.Itoa(int(personGroup.AlarmLevel)) + rule.Operator + formate(rule.RuleValue)
- logger.Info("-------鎵撳嵃浜哄憳绛夌骇瑙勫垯鍏紡锛�",formula)
+ //logger.Info("-------鎵撳嵃浜哄憳绛夌骇瑙勫垯鍏紡锛�",formula)
expression, err := govaluate.NewEvaluableExpression(formula);
if err != nil {
logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒", formula)
@@ -275,7 +275,7 @@
} else {
for _, def := range label.DefenceLevel {
formula := strconv.Itoa(int(def)) + rule.Operator + rule.RuleValue
- logger.Info("-------鎵撳嵃甯冮槻绛夌骇瑙勫垯鍏紡锛�",formula)
+ //logger.Info("-------鎵撳嵃甯冮槻绛夌骇瑙勫垯鍏紡锛�",formula)
expression, err := govaluate.NewEvaluableExpression(formula);
if err != nil {
logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒", formula)
@@ -300,7 +300,7 @@
func taskJudge(label *Label, rule *protomsg.EventPushRule) string {
formula := "'"+label.TaskId +"'"+ rule.Operator +"'"+ rule.RuleValue+"'"
expression, err := govaluate.NewEvaluableExpression(formula);
- logger.Info("-------鎵撳嵃浠诲姟瑙勫垯鍏紡锛�",formula)
+ //logger.Info("-------鎵撳嵃浠诲姟瑙勫垯鍏紡锛�",formula)
if err != nil {
logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒", formula)
return "false"
diff --git a/logger/logger.go b/logger/logger.go
new file mode 100644
index 0000000..0f03970
--- /dev/null
+++ b/logger/logger.go
@@ -0,0 +1,225 @@
+package logger
+
+import (
+ "fmt"
+ "log"
+ "os"
+ "os/exec"
+ "strings"
+ "time"
+)
+
+const (
+ PanicLevel int = iota
+ FatalLevel
+ ErrorLevel
+ WarnLevel
+ InfoLevel
+ DebugLevel
+)
+var loggerString string = ""
+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...))
+ //loggerString += fmt.Sprintln(args...)
+ }
+}
+
+func Info(args ...interface{}) {
+ if logFile.level >= InfoLevel {
+ log.SetPrefix(green(infoPrefix))
+ //_ = log.Output(2, fmt.Sprintln(args...))
+ loggerString += fmt.Sprintln(args...)
+ }
+}
+
+func Warn(args ...interface{}) {
+ if logFile.level >= WarnLevel {
+ log.SetPrefix(magenta(warnPrefix))
+ _ = log.Output(2, fmt.Sprintln(args...))
+ //loggerString += fmt.Sprintln(args...)
+ }
+}
+
+func Error(args ...interface{}) {
+ if logFile.level >= ErrorLevel {
+ log.SetPrefix(red(errorPrefix))
+ _ = log.Output(2, fmt.Sprintln(args...))
+ //loggerString += fmt.Sprintln(args...)
+ }
+}
+
+func Fatal(args ...interface{}) {
+ if logFile.level >= FatalLevel {
+ log.SetPrefix(red(fatalPrefix))
+ _ = log.Output(2, fmt.Sprintln(args...))
+ //loggerString += fmt.Sprintln(args...)
+ }
+}
+func OutPutByPanlei() {
+ _ = log.Output(2, loggerString)
+}
+
+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 32fa0e0..360d176 100644
--- a/main.go
+++ b/main.go
@@ -87,7 +87,7 @@
} else {
//runtime.GOMAXPROCS(runtime.NumCPU())
//logger.Debug("浣跨敤鐨刢pu涓暟锛�",runtime.NumCPU())
- //go func(msg []byte) {
+ go func(msg []byte) {
logger.Debug("褰撳墠鏃堕棿鎴筹細", time.Now().Unix())
arg := structure.SdkDatas{}
//paramFormat(msg, &arg)
@@ -106,7 +106,7 @@
logger.Debug("鎻掑叆瀹孍s鎵�鐢ㄦ椂闂达細", esEnd)
//浜嬩欢鎺ㄩ��
labelFilter.PushSomthing(resultMsg)
- //}(msg)
+ }(msg)
}
}
}
diff --git a/ruleserver/personTrack.go b/ruleserver/personTrack.go
index eb4fe23..74bcf8c 100644
--- a/ruleserver/personTrack.go
+++ b/ruleserver/personTrack.go
@@ -2,12 +2,14 @@
import (
"basic.com/pubsub/protomsg.git"
+ "ruleprocess/logger"
"github.com/golang/protobuf/proto"
- "basic.com/valib/logger.git"
"ruleprocess/structure"
+ "sync"
)
var TrackPond = make(map[string]*PersonTrack)
+var lock = sync.RWMutex{}
type PersonTrack struct {
Faces []*Face // 浜鸿劯鐨勬暟缁� 鏀逛负鏁伴噺
@@ -19,6 +21,7 @@
}
var num int = 25
+
// 妫�鏌ユ槸鍚﹀墠鍚庝袱娆$殑鏁版嵁id鏄惁瀹屽叏鐩稿悓锛堜汉鑴革級
func FaceIsSame(msg *protomsg.SdkMessage) {
logger.Debug("+++++++++++++++++++++浜鸿劯杩借釜寮�濮�+++++++++++++++鎽勫儚鏈篿d涓猴細", msg.Cid, "---缂撳瓨姹犱负锛�", TrackPond)
@@ -30,14 +33,18 @@
FaceIsInPond(msg.Cid, sdkinfo)
} else {
if num > 0 { // 杩炵画num娆℃病鏈夋暟鎹墠绠楁槸娌℃湁鏁版嵁锛屼笉鐒跺彧绠椾綔涓㈠抚
- logger.Info("鎴戣涓轰綘鍙槸涓㈠抚浜�,姝ゆ椂鐨刵um鍊间负锛�",num)
+ logger.Info("鎴戣涓轰綘鍙槸涓㈠抚浜�,姝ゆ椂鐨刵um鍊间负锛�", num)
num--
} else {
if TrackPond[msg.Cid] != nil {
logger.Info("濡傛灉涓嶄负绌猴細", TrackPond[msg.Cid])
+ lock.Lock()
TrackPond[msg.Cid].Faces = nil
+ lock.Unlock()
} else {
+ lock.Lock()
TrackPond[msg.Cid] = &PersonTrack{Faces: nil}
+ lock.Unlock()
logger.Info("濡傛灉涓虹┖锛�", TrackPond[msg.Cid])
}
logger.Info("鎽勫儚鏈�:" + msg.Cid + "-娌℃湁浜鸿劯锛岃閲嶇疆涓虹┖")
@@ -54,62 +61,62 @@
logger.Debug("+++++++++++++++++++++浜轰綋杩借釜寮�濮�+++++++++++++++鎽勫儚鏈篿d涓猴細", msg.Cid, "---缂撳瓨姹犱负锛�", TrackPond)
for _, sdkinfo := range msg.Tasklab.Sdkinfos { // 閬嶅巻鍚勭畻娉曠殑sdkData
if sdkinfo.Sdktype == "Yolo" {
- if len(sdkinfo.Sdkdata) > 1 {
- yoloParam := protomsg.ParamYoloObj{}
- err := proto.Unmarshal(sdkinfo.Sdkdata, &yoloParam)
- if err != nil {
- logger.Info("瑙f瀽yolo鏁版嵁鏃跺嚭鐜伴敊璇�", err)
- continue
- }
- var yoloNum int = 0
- for i := 0; i < len(yoloParam.Infos); i++ {
- if yoloParam.Infos[i].Typ == 0 {
- yoloNum++
- }
- }
- if TrackPond[msg.Cid] != nil {
- logger.Info("================杩借釜涔嬪墠yolo鐨勪釜鏁帮細", yoloNum, "鐜板湪缂撳瓨姹犱腑璁板綍鐨勪釜鏁帮細", TrackPond[msg.Cid].Yolo)
- } else {
- logger.Info("================杩借釜涔嬪墠yolo鐨勪釜鏁帮細", yoloNum, "杩樻病鏈夎繖涓憚鍍忔満鐨勭紦瀛�")
- }
- if yoloParam.Infos != nil && TrackPond[msg.Cid] != nil && yoloNum == TrackPond[msg.Cid].Yolo { // yolo鐨勫鏋滄暟閲忕浉鍚屽垯瑙嗕负涓嶅彉銆佹妸yolo鐨剆dkData娓呯┖
- yoloParam.Infos = (yoloParam.Infos)[0:0]
- sdkinfo.Sdkdata, err = proto.Marshal(&yoloParam)
- if err != nil {
- logger.Error("yolo搴忓垪鍖栭敊璇�", err)
- }
- delete(args.RuleResult,"yolo")
- logger.Info("娓呴櫎yolo鏍囩锛�",args.RuleResult["yolo"])
- logger.Info("璺熶箣鍓嶇浉鍚岋紝娓呯┖yolo鏁版嵁锛屼汉浣撹拷韪粨鏉�")
- return true
- } else {
- if TrackPond[msg.Cid] != nil {
- logger.Info("鏇存柊褰撳墠鎽勫儚鏈虹紦瀛樻睜涓殑yolo涓暟锛�", yoloNum)
- TrackPond[msg.Cid].Yolo = yoloNum
- } else {
- logger.Info("鏂板缓褰撳墠鎽勫儚鏈虹紦瀛樻睜涓殑yolo涓暟锛�", yoloNum)
- TrackPond[msg.Cid] = &PersonTrack{Yolo: yoloNum}
- }
- logger.Debug("---------------------------------浜轰綋杩借釜缁撴潫--------------------------------------")
- return false
- }
+ if len(sdkinfo.Sdkdata) > 1 {
+ yoloParam := protomsg.ParamYoloObj{}
+ err := proto.Unmarshal(sdkinfo.Sdkdata, &yoloParam)
+ if err != nil {
+ logger.Info("瑙f瀽yolo鏁版嵁鏃跺嚭鐜伴敊璇�", err)
+ continue
+ }
+ var yoloNum int = 0
+ for i := 0; i < len(yoloParam.Infos); i++ {
+ if yoloParam.Infos[i].Typ == 0 {
+ yoloNum++
+ }
+ }
+ if TrackPond[msg.Cid] != nil {
+ logger.Info("================杩借釜涔嬪墠yolo鐨勪釜鏁帮細", yoloNum, "鐜板湪缂撳瓨姹犱腑璁板綍鐨勪釜鏁帮細", TrackPond[msg.Cid].Yolo)
+ } else {
+ logger.Info("================杩借釜涔嬪墠yolo鐨勪釜鏁帮細", yoloNum, "杩樻病鏈夎繖涓憚鍍忔満鐨勭紦瀛�")
+ }
+ if yoloParam.Infos != nil && TrackPond[msg.Cid] != nil && yoloNum == TrackPond[msg.Cid].Yolo { // yolo鐨勫鏋滄暟閲忕浉鍚屽垯瑙嗕负涓嶅彉銆佹妸yolo鐨剆dkData娓呯┖
+ yoloParam.Infos = (yoloParam.Infos)[0:0]
+ sdkinfo.Sdkdata, err = proto.Marshal(&yoloParam)
+ if err != nil {
+ logger.Error("yolo搴忓垪鍖栭敊璇�", err)
+ }
+ delete(args.RuleResult,"yolo")
+ logger.Info("娓呴櫎yolo鏍囩锛�",args.RuleResult["yolo"])
+ logger.Info("璺熶箣鍓嶇浉鍚岋紝娓呯┖yolo鏁版嵁锛屼汉浣撹拷韪粨鏉�")
+ return true
+ } else {
+ if TrackPond[msg.Cid] != nil {
+ logger.Info("鏇存柊褰撳墠鎽勫儚鏈虹紦瀛樻睜涓殑yolo涓暟锛�", yoloNum)
+ TrackPond[msg.Cid].Yolo = yoloNum
} else {
- if TrackPond[msg.Cid] != nil {
- TrackPond[msg.Cid].Yolo = 0
- } else {
- TrackPond[msg.Cid] = &PersonTrack{Yolo: 0}
- }
- logger.Info("鎽勫儚鏈�:" + msg.Cid + "-娌℃湁yolo锛岃閲嶇疆涓�0")
- continue
+ logger.Info("鏂板缓褰撳墠鎽勫儚鏈虹紦瀛樻睜涓殑yolo涓暟锛�", yoloNum)
+ TrackPond[msg.Cid] = &PersonTrack{Yolo: yoloNum}
+ }
+ logger.Debug("---------------------------------浜轰綋杩借釜缁撴潫--------------------------------------")
+ return false
+ }
+ } else {
+ if TrackPond[msg.Cid] != nil {
+ TrackPond[msg.Cid].Yolo = 0
+ } else {
+ TrackPond[msg.Cid] = &PersonTrack{Yolo: 0}
+ }
+ logger.Info("鎽勫儚鏈�:" + msg.Cid + "-娌℃湁yolo锛岃閲嶇疆涓�0")
+ continue
}
}
}
logger.Debug("---------------------------------浜轰綋杩借釜缁撴潫--------------------------------------")
return false
}
-func TrackOrNot(label map[string]interface{}) bool{
+func TrackOrNot(label map[string]interface{}) bool {
if label["yolo"] != nil && len(label["yolo"].([]structure.Result)) > 0 {
- for _,res := range label["yolo"].([]structure.Result) {
+ for _, res := range label["yolo"].([]structure.Result) {
if res.TimeLabel == "10" {
return true
}
@@ -122,8 +129,8 @@
func FaceIsInPond(cameraId string, sdkinfor *protomsg.SdkmsgWithTask) {
if TrackPond[cameraId] != nil {
logger.Info("----椹墠鐐細", TrackPond[cameraId], "=====", len(TrackPond[cameraId].Faces))
- for _,face := range TrackPond[cameraId].Faces {
- logger.Info("缂撳瓨涓瓨鍌ㄧ殑face鏁版嵁锛�",face.Id,face.Score)
+ for _, face := range TrackPond[cameraId].Faces {
+ logger.Info("缂撳瓨涓瓨鍌ㄧ殑face鏁版嵁锛�", face.Id, face.Score)
}
faceParam := protomsg.ParamFacePos{}
err := proto.Unmarshal(sdkinfor.Sdkdata, &faceParam)
@@ -131,12 +138,12 @@
logger.Info("瑙f瀽face sdk鏁版嵁鏃跺嚭鐜伴敊璇�", err)
}
logger.Info("================杩借釜涔嬪墠浜鸿劯鐨勪釜鏁帮細", len(faceParam.Faces))
- for _,face := range faceParam.Faces {
- logger.Info("鏂版潵鐨勭殑face鏁版嵁锛�",face.Pos.FaceID,face.Pos.FAngle.Confidence)
+ for _, face := range faceParam.Faces {
+ logger.Info("鏂版潵鐨勭殑face鏁版嵁锛�", face.Pos.FaceID, face.Pos.FAngle.Confidence)
}
var facesTemp []protomsg.ResultFaceDetect
- for _,face := range faceParam.Faces {
- facesTemp = append(facesTemp,*face) // 鍏堟妸鏁版嵁杞瓨涓�浠斤紝涓嶇劧涓�浼氬効鏁版嵁鍒犲噺涔嬪悗鎵句笉鍒板師濮嬫暟鎹紝涓嶈兘璁╃紦瀛樻暟鎹洿鏂颁簡
+ for _, face := range faceParam.Faces {
+ facesTemp = append(facesTemp, *face) // 鍏堟妸鏁版嵁杞瓨涓�浠斤紝涓嶇劧涓�浼氬効鏁版嵁鍒犲噺涔嬪悗鎵句笉鍒板師濮嬫暟鎹紝涓嶈兘璁╃紦瀛樻暟鎹洿鏂颁簡
}
for i := 0; i < len(faceParam.Faces); {
@@ -145,14 +152,16 @@
if faceParam.Faces[i].Pos.FaceID == val.Id && faceParam.Faces[i].Pos.FAngle.Confidence <= val.Score { // 鍦ㄦ睜瀛愰噷骞朵笖鍒嗗�兼洿浣庯紝鏄鎶涘純鐨勬暟鎹�
faceFlag = true
//return "true"
- logger.Info("鍒嗗�间负锛�",faceParam.Faces[i].Pos.FAngle.Confidence,"--缂撳瓨鐨勫垎鍊间负锛�",val.Score,"姝ゆ暟鎹敱浜庡湪姹犲瓙涓笖鍒嗗�兼洿浣庯紝鏄琚姏寮冪殑鏁版嵁")
+ logger.Info("鍒嗗�间负锛�", faceParam.Faces[i].Pos.FAngle.Confidence, "--缂撳瓨鐨勫垎鍊间负锛�", val.Score, "姝ゆ暟鎹敱浜庡湪姹犲瓙涓笖鍒嗗�兼洿浣庯紝鏄琚姏寮冪殑鏁版嵁")
faceParam.Faces = append(faceParam.Faces[:i], faceParam.Faces[i+1:]...)
break
}
if faceParam.Faces[i].Pos.FaceID == val.Id && faceParam.Faces[i].Pos.FAngle.Confidence > val.Score { // 鍦ㄦ睜瀛愰噷骞朵笖鍒嗗�兼洿楂橈紝鏇存柊缂撳瓨
faceFlag = true
logger.Info("鍒嗗�肩敱", val.Score, "鏇存柊涓猴細", faceParam.Faces[i].Pos.FAngle.Confidence, "姝ゆ暟鎹敱浜庡湪姹犲瓙涓笖鍒嗗�兼洿楂橈紝鏄琚紶閫掍笅鍘荤殑鏁版嵁")
+ lock.Lock()
val.Score = faceParam.Faces[i].Pos.FAngle.Confidence
+ lock.Unlock()
}
}
if !faceFlag { // 姝や汉鑴镐笉鍦ㄦ睜瀛愪腑
@@ -161,10 +170,11 @@
i++
}
}
- logger.Info("鍙嶅簭鍒楀寲閲嶆柊瑁呴厤涔嬪墠浜鸿劯鐨勪釜鏁帮細",len(faceParam.Faces))
+ logger.Info("鍙嶅簭鍒楀寲閲嶆柊瑁呴厤涔嬪墠浜鸿劯鐨勪釜鏁帮細", len(faceParam.Faces))
+
logger.Info("涓存椂瀛樺偍鐨勬柊鏉ユ暟鎹細")
for _, temp := range facesTemp {
- logger.Info("涓存椂瀛樺偍鐨勬柊鏉ョ殑鐨刦ace鏁版嵁锛�",temp.Pos.FaceID,temp.Pos.FAngle.Confidence)
+ logger.Info("涓存椂瀛樺偍鐨勬柊鏉ョ殑鐨刦ace鏁版嵁锛�", temp.Pos.FaceID, temp.Pos.FAngle.Confidence)
}
sdkinfor.Sdkdata, err = proto.Marshal(&faceParam)
if err != nil {
@@ -183,10 +193,14 @@
} else {
// 姝ゆ暟鎹湪缂撳瓨涓絾涓嶅湪鏉ョ殑鏁版嵁甯т腑锛屽垹闄ゆ鏁版嵁鏇存柊缂撳瓨
logger.Info("鍒犻櫎姹犲瓙涓殑鏁版嵁鏇存柊缂撳瓨")
+ lock.Lock()
TrackPond[cameraId].Faces = append(TrackPond[cameraId].Faces[:i], TrackPond[cameraId].Faces[i+1:]...)
+ lock.Unlock()
}
}
} else {
- TrackPond[cameraId] = &PersonTrack{Faces: nil}
+ lock.Lock()
+ TrackPond[cameraId] = &PersonTrack{Faces: nil}
+ lock.Unlock()
}
}
diff --git a/ruleserver/readyDataForRule.go b/ruleserver/readyDataForRule.go
index 4ac8b2c..07ff10a 100644
--- a/ruleserver/readyDataForRule.go
+++ b/ruleserver/readyDataForRule.go
@@ -13,7 +13,7 @@
"nanomsg.org/go-mangos/transport/tcp"
"net"
"ruleprocess/cache"
- "basic.com/valib/logger.git"
+ "ruleprocess/logger"
"ruleprocess/structure"
"strconv"
"time"
@@ -63,7 +63,7 @@
taskGroup = task
}
}
- logger.Debug("褰撳墠鏁版嵁甯ц鍖归厤鐨勮鍒欑粍锛�-------------------------","鎽勫儚鏈篿d:",cameraId,"浠诲姟id",taskId)
+ //logger.Debug("褰撳墠鏁版嵁甯ц鍖归厤鐨勮鍒欑粍锛�-------------------------","鎽勫儚鏈篿d:",cameraId,"浠诲姟id",taskId)
if taskGroup == nil {
return nil
} else {
@@ -78,7 +78,7 @@
func GetPolygons(cameraId string) []protomsg.CameraPolygon {
var cameraPolygons []protomsg.CameraPolygon
cameraPolygons = cache.GetPolygonsByCameraId(cameraId)
- logger.Debug("------=======鏌ョ湅涓嬪叏閮ㄥ尯鍩燂細",cameraPolygons)
+ //logger.Debug("------=======鏌ョ湅涓嬪叏閮ㄥ尯鍩燂細",cameraPolygons)
return cameraPolygons
}
@@ -89,10 +89,10 @@
}
func Decimal(value float32) float64 {
value1, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", float64(value)), 64)
- logger.Info("鍒濇淇濈暀涓や綅鎴恠tr:",value1)
+ //logger.Info("鍒濇淇濈暀涓や綅鎴恠tr:",value1)
n10 := math.Pow10(4)
value2 := math.Trunc((value1+0.5/n10)*n10) / n10
- logger.Info("鍒濇淇濈暀涓や綅鎴恠tr::::",value2)
+ //logger.Info("鍒濇淇濈暀涓や綅鎴恠tr::::",value2)
return value2
}
// 鍙栧嚭鏌愪釜鏃堕棿瑙勫垯鐨勭鍑犲ぉ鐨勮鍒欐闆嗗悎
@@ -299,9 +299,9 @@
}
}
logger.Info("鍖哄煙鏄細",areaPoints,"鍖哄煙鍐呯洰鏍囨暟閲忎负锛�",a.TargetNum,"---",len(a.FilterData))
- for _,tar := range a.FilterData {
- logger.Info("鍏蜂綋鐩爣鐨勫潗鏍囦负",tar.Id,tar.Location)
- }
+ //for _,tar := range a.FilterData {
+ // logger.Info("鍏蜂綋鐩爣鐨勫潗鏍囦负",tar.Id,tar.Location)
+ //}
a.Time = time.Unix(time.Now().Unix(), 0).String()[11:16]
a.KeepRight = arg.KeepRight
a.IsStatic = arg.IsStatic
diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go
index f6ea348..d7062ee 100644
--- a/ruleserver/ruleToformula.go
+++ b/ruleserver/ruleToformula.go
@@ -3,7 +3,7 @@
import (
"ruleprocess/cache"
"ruleprocess/structure"
- "basic.com/valib/logger.git"
+ "ruleprocess/logger"
"sort"
"strconv"
"strings"
@@ -254,7 +254,7 @@
}
}
}
- logger.Info("face鏍囩鐨勯暱搴︼細",len(faces))
+ //logger.Info("face鏍囩鐨勯暱搴︼細",len(faces))
//for _,face := range faces {
// //logger.Debug("鈥斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�擾_______________鐪嬬湅浜鸿劯鐨勫潗鏍�:",face.Location)
//}
@@ -373,20 +373,20 @@
timeEle = *timeEle1
}
}
- for _,ruleRe := range timeEle.RuleResults {
- logger.Info("鑱斿姩鏁扮粍閲岀殑鏁版嵁----",ruleRe.CameraId,ruleRe.Sort)
- }
+ //for _,ruleRe := range timeEle.RuleResults {
+ // logger.Info("鑱斿姩鏁扮粍閲岀殑鏁版嵁----",ruleRe.CameraId,ruleRe.Sort)
+ //}
if flag { // 濡傛灉杩樻病鏈夎繖涓畾鏃跺櫒鍏冪礌灏辨柊澧炰竴涓�
//timeEle := TimeElement{N: 2, InitN: 2, GroupId: groupRule.GroupId} // 鎵旇繘鍘讳竴涓畾鏃跺櫒鍏冪礌
//TimeEleList = make(map[string]timeElement)
TimeEleList[groupRule.GroupId] = &timeEle // 瀹氭椂鍣ㄥ厓绱犱互瑙勫垯缁刬d涓洪敭
- logger.Info("---------------------------------------------鑱斿姩浠诲姟鍒涘缓浜嗚鏁板櫒骞朵笖璁℃暟鍣ㄩ泦鍚堜负锛�", TimeEleList)
+ //logger.Info("---------------------------------------------鑱斿姩浠诲姟鍒涘缓浜嗚鏁板櫒骞朵笖璁℃暟鍣ㄩ泦鍚堜负锛�", TimeEleList)
// 寰楀嚭杩欑粍瀹屾暣瑙勫垯閲屾秹鍙婂埌鍑犱釜鎽勫儚鏈猴紝鍐冲畾鐫�鏁扮粍閲屾湁鍑犱釜缁撴瀯浣�,鍘婚噸娣诲姞鏂瑰紡
for j := 0; j < len(groupRule.Rules); j++ {
var flag1 bool = true
- logger.Info("瑙勫垯缁勪俊鎭細",groupRule.Rules[j].CameraId)
+ //logger.Info("瑙勫垯缁勪俊鎭細",groupRule.Rules[j].CameraId)
for _, ruleRes := range TimeEleList[groupRule.GroupId].RuleResults {
- logger.Info("鑱斿姩鏁扮粍閲岀殑鏁版嵁锛�",ruleRes.CameraId,ruleRes.Sort)
+ //logger.Info("鑱斿姩鏁扮粍閲岀殑鏁版嵁锛�",ruleRes.CameraId,ruleRes.Sort)
if groupRule.Rules[j].CameraId == ruleRes.CameraId {
flag1 = false
}
@@ -455,7 +455,7 @@
for _, ruleRes := range TimeEleList[groupRule.GroupId].RuleResults {
label.LinkCache = append(label.LinkCache, ruleRes.CacheData)
}
- logger.Debug("鑱斿姩浠诲姟缂撳瓨浜嗗嚑涓暟鎹�", len(label.LinkCache))
+ //logger.Debug("鑱斿姩浠诲姟缂撳瓨浜嗗嚑涓暟鎹�", len(label.LinkCache))
for i := 0; i < len(args.RuleResult["yolo"].([]structure.Result)); i++ {
if args.RuleResult["yolo"].([]structure.Result)[i].RuleGroupId == groupRule.GroupId { // 鎶婅仈鍔ㄦ暟鎹拷鍔犱笂
args.RuleResult["yolo"].([]structure.Result)[i].Others.LinkCache = label.LinkCache
@@ -526,7 +526,7 @@
// 鎶婃病鏈夌浉浼艰�呯殑浜鸿劯浠巉ilterData涓垹闄�
for index := 0; index < len(am.FilterData); {
// 灏嗚揪涓嶅埌闃堝�肩殑鐩镐技鑰呬粠鐩镐技鑰呮暟缁勪腑鍒犻櫎
- logger.Info("鐪嬬湅鐩镐技鑰呬汉鏁帮細",len(am.FilterData[index].Liker))
+ //logger.Info("鐪嬬湅鐩镐技鑰呬汉鏁帮細",len(am.FilterData[index].Liker))
if len(am.FilterData[index].Liker) == 0 {
// Go 璇█涓垏鐗囧垹闄ゅ厓绱犵殑鏈川鏄細浠ヨ鍒犻櫎鍏冪礌涓哄垎鐣岀偣锛屽皢鍓嶅悗涓や釜閮ㄥ垎鐨勫唴瀛橀噸鏂拌繛鎺ヨ捣鏉ャ�備笉鐢ㄦ��鐤戯紝鏁扮粍鍒犻櫎鍏冪礌灏辫繖涔堝潙鐖�
am.FilterData = append(am.FilterData[:index], am.FilterData[index+1:]...)
@@ -537,7 +537,7 @@
if len(am.FilterData) > 0 {
flag = "true"
}
- logger.Info("---------浜鸿劯姣斿绗﹀悎鏉′欢鐨勬暟閲忎负锛�",len(am.FilterData))
+ //logger.Info("---------浜鸿劯姣斿绗﹀悎鏉′欢鐨勬暟閲忎负锛�",len(am.FilterData))
return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + flag, rule.Sort}
}
}
@@ -546,7 +546,7 @@
if rule.Operator == "==" || rule.Operator == ">=" || rule.Operator == "<=" || rule.Operator == "<" || rule.Operator == ">" || rule.Operator == "!=" {
// 濡傛灉鏄笉瑙勭煩鐨勮繛鎺ョ缁熺粺杩斿洖false 瑙勫垯涔熷彧鑳藉垽鏂汉鑴哥殑鐩镐技搴︼紝鎵�浠ヤ笉瀛樺湪鍒殑杩炴帴绗�
if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" { // 鍒ゆ柇鐨勬槸鐩镐技鍊硷紝鍗犳瘮锛屽昂瀵哥瓑杩囨护鏉′欢锛屽鏋滃啀鏈夛紝杩樺彲浠ュ啀鍔�
- logger.Info("-----------------------杩囪鍒欎箣鍓嶅尯鍩熷唴鐨勪汉鑴告暟閲忎负锛�",am.TargetNum)
+ //logger.Info("-----------------------杩囪鍒欎箣鍓嶅尯鍩熷唴鐨勪汉鑴告暟閲忎负锛�",am.TargetNum)
var args []*structure.Arg
if rule.RuleWithPre == "&&" {
args = am.FilterData
@@ -578,7 +578,7 @@
}
}
am.TargetNum = len(am.FilterData) // 鎶婄鍚堟潯浠剁殑鐩爣鏁伴噺鏇存柊鍒皌argetNum瀛楁
- logger.Info("杩囧畬鏉′欢鍚庣殑鐩爣鏁伴噺涓猴細",am.TargetNum)
+ //logger.Info("杩囧畬鏉′欢鍚庣殑鐩爣鏁伴噺涓猴細",am.TargetNum)
if am.TargetNum > 0 {
logger.Info("锛侊紒锛侊紒锛侊紒锛侊紒锛佷汉鑴告娴嬫垚鍔�")
return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "true", rule.Sort}
@@ -654,14 +654,14 @@
cacheId := ""
if rule.PolygonId == am.AreaId { // 棣栧厛瑙勫垯鎵�瀵瑰簲鐨勫尯鍩焛d瑕佽窡鍖哄煙鏁版嵁鐨刬d瀵圭殑涓� 閰嶇疆鐨勭畻娉曡瀵圭殑涓�
if rule.SdkArgAlias == "duration" { //
- logger.Info("褰撳墠灏忚鍒欐槸锛�---------", rule)
+ //logger.Info("褰撳墠灏忚鍒欐槸锛�---------", rule)
// 鍏堢湅鐪嬪畾鏃跺櫒鍏冪礌闃熷垪涓槸鍚︽湁杩欐潯瑙勫垯鐨勫畾鏃跺櫒,濡傛灉鏈夊氨涓嶈兘鍐嶆鍒涘缓浜�
rw.Lock()
var flag bool = true
for k, _ := range TimeEleList {
if k == groupId+"+"+rule.Id {
flag = false // 鏈夊氨缃负false
- logger.Info("鏈夎繖涓畾鏃跺櫒锛屼笉鍐嶅垱寤轰簡锛�")
+ //logger.Info("鏈夎繖涓畾鏃跺櫒锛屼笉鍐嶅垱寤轰簡锛�")
}
}
diff --git a/ruleserver/server.go b/ruleserver/server.go
index 28d6c39..b3ac5dc 100644
--- a/ruleserver/server.go
+++ b/ruleserver/server.go
@@ -4,7 +4,7 @@
"basic.com/pubsub/protomsg.git"
"basic.com/valib/gopherdiscovery.git"
"github.com/gogo/protobuf/proto"
- "basic.com/valib/logger.git"
+ "ruleprocess/logger"
"time"
)
diff --git a/ruleserver/timeTicker.go b/ruleserver/timeTicker.go
index a572879..f42f3a2 100644
--- a/ruleserver/timeTicker.go
+++ b/ruleserver/timeTicker.go
@@ -2,7 +2,7 @@
import (
"fmt"
- "basic.com/valib/logger.git"
+ "ruleprocess/logger"
"ruleprocess/structure"
"strings"
"time"
--
Gitblit v1.8.0