在写入API节点日志时尽量避免重复内容

This commit is contained in:
GoEdgeLab
2022-11-14 16:38:11 +08:00
parent f3331d293e
commit e2afacd19d

View File

@@ -6,7 +6,9 @@ import (
"github.com/TeaOSLab/EdgeAPI/internal/goman" "github.com/TeaOSLab/EdgeAPI/internal/goman"
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/cespare/xxhash"
"github.com/iwind/TeaGo/logs" "github.com/iwind/TeaGo/logs"
"github.com/iwind/TeaGo/types"
"time" "time"
) )
@@ -106,14 +108,34 @@ func uploadLogs() error {
return nil return nil
} }
const hashSize = 5
var hashList = []uint64{}
Loop: Loop:
for { for {
select { select {
case log := <-logChan: case log := <-logChan:
// 是否已存在
var hash = xxhash.Sum64String(types.String(log.NodeId) + "_" + log.Description)
var found = false
for _, h := range hashList {
if h == hash {
found = true
break
}
}
// 加入
if !found {
hashList = append(hashList, hash)
if len(hashList) > hashSize {
hashList = hashList[1:]
}
err := sharedDAO.CreateLog(nil, nodeconfigs.NodeRoleAPI, log.NodeId, log.ServerId, log.OriginId, log.Level, log.Tag, log.Description, log.CreatedAt, "", nil) err := sharedDAO.CreateLog(nil, nodeconfigs.NodeRoleAPI, log.NodeId, log.ServerId, log.OriginId, log.Level, log.Tag, log.Description, log.CreatedAt, "", nil)
if err != nil { if err != nil {
return err return err
} }
}
default: default:
break Loop break Loop
} }