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