diff --git a/cache/cache_db.go b/cache/cache_db.go index 0e9e0f2..b8662fd 100644 --- a/cache/cache_db.go +++ b/cache/cache_db.go @@ -3,31 +3,12 @@ package cache import ( "database/sql" "encoding/json" - "fmt" - "os" "strings" "time" . "code.hoteas.com/golang/hotime/common" ) -// #region agent log -func debugLog(hypothesisId, location, message string, data map[string]interface{}) { - logEntry := fmt.Sprintf(`{"hypothesisId":"%s","location":"%s","message":"%s","data":%s,"timestamp":%d,"sessionId":"debug-session"}`, - hypothesisId, location, message, toJSON(data), time.Now().UnixMilli()) - f, _ := os.OpenFile(`d:\work\hotimev1.5\.cursor\debug.log`, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) - if f != nil { - f.WriteString(logEntry + "\n") - f.Close() - } -} -func toJSON(data map[string]interface{}) string { - b, _ := json.Marshal(data) - return string(b) -} - -// #endregion - // 表名常量 const ( CacheTableName = "hotime_cache" @@ -86,12 +67,6 @@ func (that *CacheDb) initDbTable() { tableName := that.getTableName() historyTableName := that.getHistoryTableName() - // #region agent log - debugLog("F", "cache_db.go:initDbTable", "initDbTable started", map[string]interface{}{ - "dbType": dbType, "tableName": tableName, "historyTableName": historyTableName, "HistorySet": that.HistorySet, - }) - // #endregion - // 检查并创建主表 if !that.tableExists(tableName) { that.createMainTable(dbType, tableName) @@ -104,20 +79,8 @@ func (that *CacheDb) initDbTable() { } // 检查并创建历史表(开启历史记录时) - historyTableExists := that.tableExists(historyTableName) - // #region agent log - debugLog("F", "cache_db.go:initDbTable", "history table check", map[string]interface{}{ - "HistorySet": that.HistorySet, "historyTableName": historyTableName, "exists": historyTableExists, - "shouldCreate": that.HistorySet && !historyTableExists, - }) - // #endregion - if that.HistorySet && !historyTableExists { + if that.HistorySet && !that.tableExists(historyTableName) { that.createHistoryTable(dbType, historyTableName) - // #region agent log - debugLog("F", "cache_db.go:initDbTable", "createHistoryTable called", map[string]interface{}{ - "dbType": dbType, "historyTableName": historyTableName, - }) - // #endregion } that.isInit = true @@ -323,14 +286,6 @@ func (that *CacheDb) writeHistory(key string) { // 插入历史表 that.Db.Insert(historyTableName, historyData) - - // #region agent log - logFile3, _ := os.OpenFile(`d:\work\hotimev1.5\.cursor\debug.log`, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) - if logFile3 != nil { - fmt.Fprintf(logFile3, `{"hypothesisId":"C","location":"cache_db.go:writeHistory","message":"history written","data":{"key":"%s","cacheId":%d},"timestamp":%d,"sessionId":"debug-session"}`+"\n", key, cached.GetInt64("id"), time.Now().UnixMilli()) - logFile3.Close() - } - // #endregion } // get 获取缓存 @@ -338,15 +293,6 @@ func (that *CacheDb) get(key string) interface{} { tableName := that.getTableName() cached := that.Db.Get(tableName, "*", Map{"key": key}) - // #region agent log - logFile4, _ := os.OpenFile(`d:\work\hotimev1.5\.cursor\debug.log`, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) - if logFile4 != nil { - found := cached != nil - fmt.Fprintf(logFile4, `{"hypothesisId":"D","location":"cache_db.go:get","message":"get query","data":{"key":"%s","found":%t},"timestamp":%d,"sessionId":"debug-session"}`+"\n", key, found, time.Now().UnixMilli()) - logFile4.Close() - } - // #endregion - if cached == nil { return nil } @@ -372,14 +318,6 @@ func (that *CacheDb) get(key string) interface{} { return nil } - // #region agent log - logFile5, _ := os.OpenFile(`d:\work\hotimev1.5\.cursor\debug.log`, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) - if logFile5 != nil { - fmt.Fprintf(logFile5, `{"hypothesisId":"D","location":"cache_db.go:get","message":"get success","data":{"key":"%s","hasData":true},"timestamp":%d,"sessionId":"debug-session"}`+"\n", key, time.Now().UnixMilli()) - logFile5.Close() - } - // #endregion - return data } @@ -433,14 +371,6 @@ func (that *CacheDb) set(key string, value interface{}, endTime time.Time) { } } - // #region agent log - logFile2, _ := os.OpenFile(`d:\work\hotimev1.5\.cursor\debug.log`, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) - if logFile2 != nil { - fmt.Fprintf(logFile2, `{"hypothesisId":"B","location":"cache_db.go:set","message":"set completed","data":{"key":"%s","endTime":"%s","dbType":"%s"},"timestamp":%d,"sessionId":"debug-session"}`+"\n", key, endTimeStr, dbType, time.Now().UnixMilli()) - logFile2.Close() - } - // #endregion - // 写入历史记录 that.writeHistory(key) @@ -473,20 +403,6 @@ func (that *CacheDb) delete(key string) { func (that *CacheDb) Cache(key string, data ...interface{}) *Obj { that.initDbTable() - // #region agent log - logFile, _ := os.OpenFile(`d:\work\hotimev1.5\.cursor\debug.log`, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) - if logFile != nil { - op := "get" - if len(data) == 1 && data[0] == nil { - op = "delete" - } else if len(data) >= 1 { - op = "set" - } - fmt.Fprintf(logFile, `{"hypothesisId":"A","location":"cache_db.go:Cache","message":"Cache called","data":{"key":"%s","operation":"%s","dataLen":%d},"timestamp":%d,"sessionId":"debug-session"}`+"\n", key, op, len(data), time.Now().UnixMilli()) - logFile.Close() - } - // #endregion - // 获取缓存 if len(data) == 0 { return &Obj{Data: that.get(key)} diff --git a/go.sum b/go.sum index 7994667..1c6d19f 100644 --- a/go.sum +++ b/go.sum @@ -18,6 +18,7 @@ github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/gomodule/redigo v1.8.5 h1:nRAxCa+SVsyjSBrtZmG/cqb6VbTmuRzpg/PoTFlpumc= github.com/gomodule/redigo v1.8.5/go.mod h1:P9dn9mFrCBvWhGE1wpxx6fgq7BAeLBk+UUUzlpkBYO0= +github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 h1:2VTzZjLZBgl62/EtslCrtky5vbi9dd7HrQPQIx6wqiw= github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= @@ -56,6 +57,7 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.364 h1:X1Jw github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.364/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ocr v1.0.364 h1:kbor60vo37v7Hu+i17gooox9Rw281fVHNna8zwtDG1w= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ocr v1.0.364/go.mod h1:LeIUBOLhc+Y5YCEpZrULPD9lgoXXV4/EmIcoEvmHz9c= +github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= @@ -69,7 +71,6 @@ go.mongodb.org/mongo-driver v1.10.1 h1:NujsPveKwHaWuKUer/ceo9DzEe7HIj1SlJ6uvXZG0 go.mongodb.org/mongo-driver v1.10.1/go.mod h1:z4XpeoU6w+9Vht+jAFyLgVrD+jGSQQe0+CBWFHNiHt8= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29 h1:tkVvjkPTB7pnW3jnid7kNyAMPVWllTNOf/qKDze4p9o= golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d h1:sK3txAijHtOK88l68nt020reeT1ZdKLIYetKl95FzVY= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= @@ -95,6 +96,7 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -102,6 +104,6 @@ gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/h2non/gock.v1 v1.0.15 h1:SzLqcIlb/fDfg7UvukMpNcWsu7sI5tWwL+KCATZqks0= gopkg.in/h2non/gock.v1 v1.0.15/go.mod h1:sX4zAkdYX1TRGJ2JY156cFspQn4yRWn6p9EMdODlynE= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/log/logrus.go b/log/logrus.go index dda13e7..683f248 100644 --- a/log/logrus.go +++ b/log/logrus.go @@ -80,8 +80,8 @@ const maxFrameworkDepth = 10 // isHoTimeFrameworkFile 判断是否是 HoTime 框架文件 // 更精确的匹配:只有明确属于框架的文件才会被跳过 func isHoTimeFrameworkFile(file string) bool { - // 1. logrus 日志库内部文件 - if strings.HasPrefix(file, "logrus/") { + // 1. logrus 日志库内部文件(支持带版本号的路径,如 logrus@v1.8.1/entry.go) + if strings.HasPrefix(file, "logrus/") || strings.HasPrefix(file, "logrus@") { return true } @@ -175,14 +175,12 @@ func findCaller(skip int) string { // 因为文件的全路径往往很长, 而文件名在多个包中往往有重复, 因此这里选择多取一层, 取到文件所在的上层目录那层. func getCaller(skip int) (string, int) { _, file, line, ok := runtime.Caller(skip) - //fmt.Println(file) - //fmt.Println(line) if !ok { return "", 0 } n := 0 for i := len(file) - 1; i > 0; i-- { - if file[i] == '/' { + if file[i] == '/' || file[i] == '\\' { // 同时处理 / 和 \ 路径分隔符 n++ if n >= 2 { file = file[i+1:]