From 6a3410ffa6e8c06d7f502cdbf34a7830bfe50d99 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期一, 30 十月 2023 16:10:47 +0800 Subject: [PATCH] 修改gorm log, 添加集群状态判断, 默认开启 --- serf/sync.go | 77 +++++++++++++++++++++++-- serf/sqlite.go | 59 ------------------- 2 files changed, 69 insertions(+), 67 deletions(-) diff --git a/serf/sqlite.go b/serf/sqlite.go index 6ab2f6c..d91fbf1 100644 --- a/serf/sqlite.go +++ b/serf/sqlite.go @@ -1,10 +1,8 @@ package serf import ( - "apsClient/pkg/logx" "errors" "fmt" - "regexp" "strings" "github.com/jinzhu/gorm" @@ -76,61 +74,4 @@ } return nil, errors.New("tableNames is nil") -} - -type DbLogger struct { -} - -func (dbLogger *DbLogger) Print(values ...interface{}) { - var ( - level = values[0] - ) - - fmt.Println("dblogger", values) - - if level == "sql" { - msgArr := gorm.LogFormatter(values...) - sql := msgArr[3].(string) - logx.Infof("sql: %v", sql) - sql = strings.TrimPrefix(sql, " ") - if !strings.HasPrefix(sql, "SELECT") && !strings.HasPrefix(sql, "select") && !strings.Contains(sql, "PRAGMA") && !strings.Contains(sql, "pragma") { - affected := values[5].(int64) - if affected > 0 { //鎵ц鎴愬姛 - //鍒ゆ柇鎿嶄綔鐨勬槸鍝紶琛� - whereIdx := strings.Index(sql, "WHERE") - sqlWithTable := sql - if whereIdx > -1 { - sqlWithTable = sql[:whereIdx] - } - - fmt.Println("鍒ゆ柇鏄摢寮犺〃 sqlWithTable:", sqlWithTable) - - insertReg := regexp.MustCompile(`^\s*(?i:insert)\s`) //insert - updateReg := regexp.MustCompile(`^\s*(?i:update)\s`) //update - delReg := regexp.MustCompile(`^\s*(?i:delete)\s`) //delete - - if insertReg.MatchString(sqlWithTable) { - fmt.Println("鎻掑叆鎿嶄綔") - for _, t := range agent.syncTables { - reg := regexp.MustCompile(`\s+\"?(?i:` + t + `)\"?\s+`) - if reg.MatchString(sqlWithTable) { - fmt.Println("灞炰簬鍚屾琛�:", t) - syncSqlChan <- sql - } - } - } else if updateReg.MatchString(sqlWithTable) || delReg.MatchString(sqlWithTable) { - fmt.Println("鍒犻櫎鎴栬�呮洿鏂�") - for _, t := range agent.syncTables { - reg := regexp.MustCompile(`\s+\"?(?i:` + t + `)\"?\s+`) - if reg.MatchString(sqlWithTable) { - fmt.Println("灞炰簬鍚屾琛�:", t) - syncSqlChan <- sql - } - } - } - } - } - } else { - fmt.Println("dbLogger level!=sql") - } } diff --git a/serf/sync.go b/serf/sync.go index ce3c2fb..d8ef4c7 100644 --- a/serf/sync.go +++ b/serf/sync.go @@ -7,6 +7,7 @@ "fmt" "os" "os/signal" + "regexp" "strings" "syscall" "time" @@ -65,9 +66,10 @@ agent.queryTableTopic = procName + "/serf/query/sqls" // 璁剧疆鏃ュ織鍥炶皟 - db.SetLogger(&DbLogger{}) + db.SetLogger(&agent) + // 鍏堝叧闂棩蹇� - db.LogMode(false) + //db.LogMode(false) return &agent } @@ -153,7 +155,7 @@ ss.QueryClusterStat() //if ss.ClusterStatus != "" { - ss.sqlDB.LogMode(true) + //ss.sqlDB.LogMode(true) //} initChan <- true @@ -239,28 +241,28 @@ // 鍒涘缓闆嗙兢, 寮�鍚棩蹇楄窡韪�, 璁剧疆瑙掕壊master ss.clusterEventFn(EventCreateCluster) ss.ClusterStatus = "master" - ss.sqlDB.LogMode(true) + //ss.sqlDB.LogMode(true) case "join": // 鍔犲叆闆嗙兢, 寮�鍚棩蹇楄窡韪�, 璁剧疆瑙掕壊slave ss.clusterEventFn(EventJoinCluster) ss.onJoinCluster() ss.ClusterStatus = "slave" - ss.sqlDB.LogMode(true) + //ss.sqlDB.LogMode(true) case "leave": // 閫�鍑洪泦缇�, 寮�鍚棩蹇楄窡韪�, 璁剧疆瑙掕壊slave ss.clusterEventFn(EventLeaveCluster) ss.ClusterStatus = "" - ss.sqlDB.LogMode(true) + //ss.sqlDB.LogMode(true) case "slave2master": ss.clusterEventFn(EventSlave2Master) ss.ClusterStatus = "master" - ss.sqlDB.LogMode(true) + //ss.sqlDB.LogMode(true) case "master2slave": ss.clusterEventFn(EventMaster2Slave) ss.ClusterStatus = "slave" - ss.sqlDB.LogMode(true) + //ss.sqlDB.LogMode(true) } } } @@ -437,6 +439,65 @@ return err } +func (ss *SyncServer)Print(values ...interface{}) { + var ( + level = values[0] + ) + + //fmt.Println("dblogger", values) + + if level == "sql" { + msgArr := gorm.LogFormatter(values...) + sql := msgArr[3].(string) + logx.Infof("sql: %v", sql) + sql = strings.TrimPrefix(sql, " ") + if !strings.HasPrefix(sql, "SELECT") && !strings.HasPrefix(sql, "select") && !strings.Contains(sql, "PRAGMA") && !strings.Contains(sql, "pragma") { + affected := values[5].(int64) + if affected > 0 { //鎵ц鎴愬姛 + //鍒ゆ柇鎿嶄綔鐨勬槸鍝紶琛� + whereIdx := strings.Index(sql, "WHERE") + sqlWithTable := sql + if whereIdx > -1 { + sqlWithTable = sql[:whereIdx] + } + + //fmt.Println("鍒ゆ柇鏄摢寮犺〃 sqlWithTable:", sqlWithTable) + + insertReg := regexp.MustCompile(`^\s*(?i:insert)\s`) //insert + updateReg := regexp.MustCompile(`^\s*(?i:update)\s`) //update + delReg := regexp.MustCompile(`^\s*(?i:delete)\s`) //delete + + if insertReg.MatchString(sqlWithTable) { + //fmt.Println("鎻掑叆鎿嶄綔") + for _, t := range agent.syncTables { + reg := regexp.MustCompile(`\s+\"?(?i:` + t + `)\"?\s+`) + if reg.MatchString(sqlWithTable) { + //fmt.Println("灞炰簬鍚屾琛�:", t) + // 鍒ゆ柇鏄湪闆嗙兢鍐�, 鍚屾娑堟伅, 鍒ゆ柇涓ょ瑙掕壊, 涓洪伩鍏嶅叾浠栧嚭鐜扮姸鎬� + if ss.ClusterStatus == "master" || ss.ClusterStatus == "slave" { + syncSqlChan <- sql + } + } + } + } else if updateReg.MatchString(sqlWithTable) || delReg.MatchString(sqlWithTable) { + //fmt.Println("鍒犻櫎鎴栬�呮洿鏂�") + for _, t := range agent.syncTables { + reg := regexp.MustCompile(`\s+\"?(?i:` + t + `)\"?\s+`) + if reg.MatchString(sqlWithTable) { + //fmt.Println("灞炰簬鍚屾琛�:", t) + if ss.ClusterStatus == "master" || ss.ClusterStatus == "slave" { + syncSqlChan <- sql + } + } + } + } + } + } + } else { + fmt.Println("dbLogger level!=sql") + } +} + func arrayContains(list []string, arr []string) string { if arr == nil || list == nil { return "" -- Gitblit v1.8.0