From e2afacd19da93b48e804da08a713f52c40103dab Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Mon, 14 Nov 2022 16:38:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=E5=86=99=E5=85=A5API=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E6=97=A5=E5=BF=97=E6=97=B6=E5=B0=BD=E9=87=8F=E9=81=BF?= =?UTF-8?q?=E5=85=8D=E9=87=8D=E5=A4=8D=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/remotelogs/utils.go | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/internal/remotelogs/utils.go b/internal/remotelogs/utils.go index 9823d9b6..09b20032 100644 --- a/internal/remotelogs/utils.go +++ b/internal/remotelogs/utils.go @@ -6,7 +6,9 @@ import ( "github.com/TeaOSLab/EdgeAPI/internal/goman" "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" + "github.com/cespare/xxhash" "github.com/iwind/TeaGo/logs" + "github.com/iwind/TeaGo/types" "time" ) @@ -106,13 +108,33 @@ func uploadLogs() error { return nil } + const hashSize = 5 + var hashList = []uint64{} + Loop: for { select { case log := <-logChan: - err := sharedDAO.CreateLog(nil, nodeconfigs.NodeRoleAPI, log.NodeId, log.ServerId, log.OriginId, log.Level, log.Tag, log.Description, log.CreatedAt, "", nil) - if err != nil { - return err + // 是否已存在 + 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) + if err != nil { + return err + } } default: break Loop