diff --git a/go.mod b/go.mod index 81533aa..c619f4f 100644 --- a/go.mod +++ b/go.mod @@ -6,10 +6,10 @@ require ( github.com/go-redis/redis/v9 v9.0.0-beta.2 github.com/jasonlvhit/gocron v0.0.1 github.com/robfig/cron/v3 v3.0.1 - go.dtapp.net/dorm v1.0.32 + go.dtapp.net/dorm v1.0.33 go.dtapp.net/goarray v1.0.1 - go.dtapp.net/goip v1.0.29 - go.dtapp.net/golog v1.0.72 + go.dtapp.net/goip v1.0.30 + go.dtapp.net/golog v1.0.73 go.dtapp.net/gostring v1.0.10 go.dtapp.net/gotime v1.0.5 go.dtapp.net/gotrace_id v1.0.6 diff --git a/go.sum b/go.sum index de0a338..d6f5439 100644 --- a/go.sum +++ b/go.sum @@ -503,14 +503,14 @@ github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a/go.mod h1:ul22v+Nro/ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0= -go.dtapp.net/dorm v1.0.32 h1:kMU2on0t8e87qDvXEt8DlaM1DJjLBvUOaIGc5fNsgzY= -go.dtapp.net/dorm v1.0.32/go.mod h1:ocdIcMoJCLGngRNPSAa/1Hq+Mu1JDTxT0hH2QBlL2ik= +go.dtapp.net/dorm v1.0.33 h1:QRAVEQ6Uf3WENSOrXytzzH+PjH90JySowd3jbB9PQjw= +go.dtapp.net/dorm v1.0.33/go.mod h1:4WNSzrUGs7YIudq1cRZQNkHOlPAbG6thI3mXX1tQcYY= go.dtapp.net/goarray v1.0.1 h1:cHNHaJ2MFcuJPA1WKU2PM1EUZShS1vQqEH7n6YXsQVU= go.dtapp.net/goarray v1.0.1/go.mod h1:/MPhlFCAhQyeNV1M0v1PAOOX33Sg705fVjUgMO12IBQ= -go.dtapp.net/goip v1.0.29 h1:yM+9m70EytQr8MzewlnQmb6tcNtADcrlt0Wx6Z2FPZQ= -go.dtapp.net/goip v1.0.29/go.mod h1:ewEUMDUCcNwSUu6l10tnjcSMTCYfjNgxUFRZ1GDHxEs= -go.dtapp.net/golog v1.0.72 h1:VApNW53mWAejCE+JTCZjnhhje7BQH0rlQYab6+PsL7Q= -go.dtapp.net/golog v1.0.72/go.mod h1:nZW04srPoTpCr92BydUFoytlxZQBvahfO4n3YZY4Hmw= +go.dtapp.net/goip v1.0.30 h1:/wP2ewSNWLzG2Oh2VsTfQCv/2rw1KKi9XerD4rQaMLM= +go.dtapp.net/goip v1.0.30/go.mod h1:9l8e/slVanziGXfvrUwOMx6028EV/lzN5vVpixmtUYY= +go.dtapp.net/golog v1.0.73 h1:1j7EU1iIM8b0UTMScxqUHZsgYFjKRy9SG/ArlpdcnfE= +go.dtapp.net/golog v1.0.73/go.mod h1:I1WfgHWcEikqxjhMdoyH+/VVi/9KmnZy11NnqpsugqY= go.dtapp.net/gorandom v1.0.1 h1:IWfMClh1ECPvyUjlqD7MwLq4mZdUusD1qAwAdsvEJBs= go.dtapp.net/gorandom v1.0.1/go.mod h1:ZPdgalKpvFV/ATQqR0k4ns/F/IpITAZpx6WkWirr5Y8= go.dtapp.net/gorequest v1.0.31 h1:r/OoU5Y00TbJjkQtpvwjsb/pllqO0UQQjFRY1veZYZc= diff --git a/redis_get.go b/redis_get.go index c0c2568..0758075 100644 --- a/redis_get.go +++ b/redis_get.go @@ -6,7 +6,6 @@ import ( "fmt" "go.dtapp.net/gojobs/jobs_gorm_model" "go.dtapp.net/gostring" - "go.dtapp.net/gotrace_id" "math/rand" "time" ) @@ -21,7 +20,6 @@ func (c *Client) GetIssueAddress(ctx context.Context, workers []string, v *jobs_ var ( currentIp = "" // 当前Ip appointIpStatus = false // 指定Ip状态 - traceId = gotrace_id.GetTraceIdContext(ctx) ) // 赋值ip @@ -35,7 +33,7 @@ func (c *Client) GetIssueAddress(ctx context.Context, workers []string, v *jobs_ if appointIpStatus == true { // 判断是否指定某ip执行 if gostring.Contains(workers[0], currentIp) == true { - c.zapLog.WithTraceId(ctx).Sugar().Info("[jobs.GetIssueAddress]只有一个客户端在线,指定某ip执行", traceId, workers[0], currentIp) + c.zapLog.WithTraceId(ctx).Sugar().Info("[jobs.GetIssueAddress]只有一个客户端在线,指定某ip执行:", workers[0], currentIp) return workers[0], nil } return "", errors.New(fmt.Sprintf("需要执行的[%s]客户端不在线", currentIp)) @@ -47,7 +45,7 @@ func (c *Client) GetIssueAddress(ctx context.Context, workers []string, v *jobs_ if appointIpStatus == true { for wk, wv := range workers { if gostring.Contains(wv, currentIp) == true { - c.zapLog.WithTraceId(ctx).Sugar().Info("[jobs.GetIssueAddress]优先处理指定某ip执行", traceId, workers[wk], currentIp) + c.zapLog.WithTraceId(ctx).Sugar().Info("[jobs.GetIssueAddress]优先处理指定某ip执行:", workers[wk], currentIp) return workers[wk], nil } } @@ -58,7 +56,7 @@ func (c *Client) GetIssueAddress(ctx context.Context, workers []string, v *jobs_ if address == "" { return address, errors.New("获取执行的客户端异常") } - c.zapLog.WithTraceId(ctx).Sugar().Info("[jobs.GetIssueAddress]随机返回一个", traceId, address, currentIp) + c.zapLog.WithTraceId(ctx).Sugar().Info("[jobs.GetIssueAddress]随机返回一个:", address, currentIp) return address, nil } } @@ -67,7 +65,7 @@ func (c *Client) GetIssueAddress(ctx context.Context, workers []string, v *jobs_ func (c *Client) GetSubscribeClientList(ctx context.Context) (client []string, err error) { if c.config.debug == true { - c.zapLog.WithTraceId(ctx).Sugar().Info("[jobs.GetSubscribeClientList] %s\n", c.cache.cornKeyPrefix+"_*") + c.zapLog.WithTraceId(ctx).Sugar().Info("[jobs.GetSubscribeClientList]:", c.cache.cornKeyPrefix+"_*") } // 查询活跃的channel diff --git a/vendor/go.dtapp.net/dorm/.gitignore b/vendor/go.dtapp.net/dorm/.gitignore index 79fdf16..50df396 100644 --- a/vendor/go.dtapp.net/dorm/.gitignore +++ b/vendor/go.dtapp.net/dorm/.gitignore @@ -8,4 +8,3 @@ *.txt *.text gomod.sh -/vendor/ diff --git a/vendor/go.dtapp.net/dorm/const.go b/vendor/go.dtapp.net/dorm/const.go index 1f9d9ef..af53090 100644 --- a/vendor/go.dtapp.net/dorm/const.go +++ b/vendor/go.dtapp.net/dorm/const.go @@ -1,3 +1,3 @@ package dorm -const Version = "1.0.32" +const Version = "1.0.33" diff --git a/vendor/go.dtapp.net/dorm/gorm_postgresql.go b/vendor/go.dtapp.net/dorm/gorm_postgresql.go index 19b74a5..2fd10b4 100644 --- a/vendor/go.dtapp.net/dorm/gorm_postgresql.go +++ b/vendor/go.dtapp.net/dorm/gorm_postgresql.go @@ -81,7 +81,7 @@ func NewGormPostgresClient(config *ConfigGormClient) (*GormClient, error) { // 设置了连接可复用的最大时间 if c.config.ConnSetConnMaxLifetime == 0 { - sqlDB.SetConnMaxLifetime(time.Second * 600) + sqlDB.SetConnMaxLifetime(time.Hour) } else { sqlDB.SetConnMaxLifetime(time.Duration(c.config.ConnSetConnMaxLifetime)) } diff --git a/vendor/go.dtapp.net/goip/.gitignore b/vendor/go.dtapp.net/goip/.gitignore index c316f13..27a3bc6 100644 --- a/vendor/go.dtapp.net/goip/.gitignore +++ b/vendor/go.dtapp.net/goip/.gitignore @@ -6,4 +6,3 @@ *.log *_test.go gomod.sh -/vendor/ diff --git a/vendor/go.dtapp.net/goip/const.go b/vendor/go.dtapp.net/goip/const.go index 66f0231..70adccf 100644 --- a/vendor/go.dtapp.net/goip/const.go +++ b/vendor/go.dtapp.net/goip/const.go @@ -1,3 +1,3 @@ package goip -const Version = "1.0.29" +const Version = "1.0.30" diff --git a/vendor/go.dtapp.net/goip/v4/ip.dat b/vendor/go.dtapp.net/goip/v4/ip.dat index aa8281e..2c36c61 100644 Binary files a/vendor/go.dtapp.net/goip/v4/ip.dat and b/vendor/go.dtapp.net/goip/v4/ip.dat differ diff --git a/vendor/go.dtapp.net/golog/api.go b/vendor/go.dtapp.net/golog/api.go index 4a23013..d24e022 100644 --- a/vendor/go.dtapp.net/golog/api.go +++ b/vendor/go.dtapp.net/golog/api.go @@ -135,10 +135,10 @@ func NewApiClient(config *ApiClientConfig) (*ApiClient, error) { c.log.mongo = true // 创建时间序列集合 - c.mongoCreateCollection() + c.mongoCreateCollection(ctx) // 创建索引 - c.mongoCreateIndexes() + c.mongoCreateIndexes(ctx) } diff --git a/vendor/go.dtapp.net/golog/api_gorm.go b/vendor/go.dtapp.net/golog/api_gorm.go index b9e8191..344c177 100644 --- a/vendor/go.dtapp.net/golog/api_gorm.go +++ b/vendor/go.dtapp.net/golog/api_gorm.go @@ -6,6 +6,7 @@ import ( "go.dtapp.net/dorm" "go.dtapp.net/goip" "go.dtapp.net/gorequest" + "go.dtapp.net/gotime" "go.dtapp.net/gotrace_id" "go.dtapp.net/gourl" "gorm.io/gorm" @@ -135,10 +136,15 @@ func (c *ApiClient) gormRecord(ctx context.Context, postgresqlLog apiPostgresqlL } // GormQuery 查询 -func (c *ApiClient) GormQuery() *gorm.DB { +func (c *ApiClient) GormQuery(ctx context.Context) *gorm.DB { return c.gormClient.Db.Table(c.gormConfig.tableName) } +// GormDelete 删除 +func (c *ApiClient) GormDelete(ctx context.Context, hour int64) error { + return c.gormClient.Db.Table(c.gormConfig.tableName).Where("request_time < ?", gotime.Current().BeforeHour(hour).Format()).Delete(&apiPostgresqlLog{}).Error +} + // GormMiddleware 中间件 func (c *ApiClient) GormMiddleware(ctx context.Context, request gorequest.Response, sdkVersion string) { data := apiPostgresqlLog{ diff --git a/vendor/go.dtapp.net/golog/api_mongo.go b/vendor/go.dtapp.net/golog/api_mongo.go index 2966b32..27684cf 100644 --- a/vendor/go.dtapp.net/golog/api_mongo.go +++ b/vendor/go.dtapp.net/golog/api_mongo.go @@ -6,6 +6,7 @@ import ( "go.dtapp.net/dorm" "go.dtapp.net/goip" "go.dtapp.net/gorequest" + "go.dtapp.net/gotime" "go.dtapp.net/gotrace_id" "go.dtapp.net/gourl" "go.mongodb.org/mongo-driver/bson" @@ -72,24 +73,24 @@ func NewApiMongoClient(config *ApiMongoClientConfig) (*ApiClient, error) { c.log.mongo = true // 创建时间序列集合 - c.mongoCreateCollection() + c.mongoCreateCollection(ctx) // 创建索引 - c.mongoCreateIndexes() + c.mongoCreateIndexes(ctx) return c, nil } // 创建时间序列集合 -func (c *ApiClient) mongoCreateCollection() { +func (c *ApiClient) mongoCreateCollection(ctx context.Context) { var commandResult bson.M - commandErr := c.mongoClient.Db.Database(c.mongoConfig.databaseName).RunCommand(context.TODO(), bson.D{{ + commandErr := c.mongoClient.Db.Database(c.mongoConfig.databaseName).RunCommand(ctx, bson.D{{ "listCollections", 1, }}).Decode(&commandResult) if commandErr != nil { c.zapLog.WithLogger().Sugar().Errorf("检查时间序列集合:%s", commandErr) } else { - err := c.mongoClient.Db.Database(c.mongoConfig.databaseName).CreateCollection(context.TODO(), c.mongoConfig.collectionName, options.CreateCollection().SetTimeSeriesOptions(options.TimeSeries().SetTimeField("request_time"))) + err := c.mongoClient.Db.Database(c.mongoConfig.databaseName).CreateCollection(ctx, c.mongoConfig.collectionName, options.CreateCollection().SetTimeSeriesOptions(options.TimeSeries().SetTimeField("log_time"))) if err != nil { c.zapLog.WithLogger().Sugar().Errorf("创建时间序列集合:%s", err) } @@ -97,41 +98,44 @@ func (c *ApiClient) mongoCreateCollection() { } // 创建索引 -func (c *ApiClient) mongoCreateIndexes() { - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{Keys: bson.D{ +func (c *ApiClient) mongoCreateIndexes(ctx context.Context) { + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{Keys: bson.D{ {"trace_id", 1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{Keys: bson.D{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{Keys: bson.D{ + {"log_time", -1}, + }})) + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{Keys: bson.D{ {"request_time", -1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{Keys: bson.D{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{Keys: bson.D{ {"request_method", 1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{Keys: bson.D{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{Keys: bson.D{ {"response_status_code", 1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{Keys: bson.D{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{Keys: bson.D{ {"response_time", -1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{Keys: bson.D{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{Keys: bson.D{ {"system_host_name", 1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{Keys: bson.D{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{Keys: bson.D{ {"system_inside_ip", 1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{Keys: bson.D{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{Keys: bson.D{ {"system_os", -1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{Keys: bson.D{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{Keys: bson.D{ {"system_arch", -1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{Keys: bson.D{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{Keys: bson.D{ {"system_cpu_quantity", 1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{Keys: bson.D{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{Keys: bson.D{ {"go_version", -1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{Keys: bson.D{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{Keys: bson.D{ {"sdk_version", -1}, }})) } @@ -139,8 +143,9 @@ func (c *ApiClient) mongoCreateIndexes() { // 模型结构体 type apiMongolLog struct { LogId primitive.ObjectID `json:"log_id,omitempty" bson:"_id,omitempty"` //【记录】编号 - TraceId string `json:"trace_id,omitempty" bson:"trace_id,omitempty"` //【系统】跟踪编号 - RequestTime primitive.DateTime `json:"request_time,omitempty" bson:"request_time,omitempty"` //【请求】时间 + LogTime primitive.DateTime `json:"log_time,omitempty" bson:"log_time,omitempty"` //【记录】时间 + TraceId string `json:"trace_id,omitempty" bson:"trace_id,omitempty"` //【记录】跟踪编号 + RequestTime dorm.BsonTime `json:"request_time,omitempty" bson:"request_time,omitempty"` //【请求】时间 RequestUri string `json:"request_uri,omitempty" bson:"request_uri,omitempty"` //【请求】链接 RequestUrl string `json:"request_url,omitempty" bson:"request_url,omitempty"` //【请求】链接 RequestApi string `json:"request_api,omitempty" bson:"request_api,omitempty"` //【请求】接口 @@ -152,7 +157,7 @@ type apiMongolLog struct { ResponseStatusCode int `json:"response_status_code,omitempty" bson:"response_status_code,omitempty"` //【返回】状态码 ResponseBody interface{} `json:"response_body,omitempty" bson:"response_body,omitempty"` //【返回】内容 ResponseContentLength int64 `json:"response_content_length,omitempty" bson:"response_content_length,omitempty"` //【返回】大小 - ResponseTime primitive.DateTime `json:"response_time,omitempty" bson:"response_time,omitempty"` //【返回】时间 + ResponseTime dorm.BsonTime `json:"response_time,omitempty" bson:"response_time,omitempty"` //【返回】时间 SystemHostName string `json:"system_host_name,omitempty" bson:"system_host_name,omitempty"` //【系统】主机名 SystemInsideIp string `json:"system_inside_ip,omitempty" bson:"system_inside_ip,omitempty"` //【系统】内网ip SystemOs string `json:"system_os,omitempty" bson:"system_os,omitempty"` //【系统】系统类型 @@ -165,19 +170,15 @@ type apiMongolLog struct { // 记录日志 func (c *ApiClient) mongoRecord(ctx context.Context, mongoLog apiMongolLog) (err error) { - mongoLog.SystemHostName = c.mongoConfig.hostname - mongoLog.SystemInsideIp = c.mongoConfig.insideIp - mongoLog.GoVersion = c.mongoConfig.goVersion - - mongoLog.TraceId = gotrace_id.GetTraceIdContext(ctx) - - mongoLog.RequestIp = c.currentIp - - mongoLog.SystemOs = c.config.os - mongoLog.SystemArch = c.config.arch - mongoLog.SystemCpuQuantity = c.config.maxProCs - - mongoLog.LogId = primitive.NewObjectID() + mongoLog.SystemHostName = c.mongoConfig.hostname //【系统】主机名 + mongoLog.SystemInsideIp = c.mongoConfig.insideIp //【系统】内网ip + mongoLog.GoVersion = c.mongoConfig.goVersion //【程序】Go版本 + mongoLog.TraceId = gotrace_id.GetTraceIdContext(ctx) //【记录】跟踪编号 + mongoLog.RequestIp = c.currentIp //【请求】请求Ip + mongoLog.SystemOs = c.config.os //【系统】系统类型 + mongoLog.SystemArch = c.config.arch //【系统】系统架构 + mongoLog.SystemCpuQuantity = c.config.maxProCs //【系统】CPU核数 + mongoLog.LogId = primitive.NewObjectID() //【记录】编号 _, err = c.mongoClient.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).InsertOne(mongoLog) if err != nil { @@ -188,25 +189,32 @@ func (c *ApiClient) mongoRecord(ctx context.Context, mongoLog apiMongolLog) (err } // MongoQuery 查询 -func (c *ApiClient) MongoQuery() *dorm.MongoClient { - return c.mongoClient.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName) +func (c *ApiClient) MongoQuery(ctx context.Context) *mongo.Collection { + return c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName) +} + +// MongoDelete 删除 +func (c *ApiClient) MongoDelete(ctx context.Context, hour int64) (*mongo.DeleteResult, error) { + filter := bson.D{{"log_time", bson.D{{"$lt", primitive.NewDateTimeFromTime(gotime.Current().BeforeHour(hour).Time)}}}} + return c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).DeleteMany(ctx, filter) } // MongoMiddleware 中间件 func (c *ApiClient) MongoMiddleware(ctx context.Context, request gorequest.Response, sdkVersion string) { data := apiMongolLog{ - RequestTime: primitive.NewDateTimeFromTime(request.RequestTime), //【请求】时间 - RequestUri: request.RequestUri, //【请求】链接 - RequestUrl: gourl.UriParse(request.RequestUri).Url, //【请求】链接 - RequestApi: gourl.UriParse(request.RequestUri).Path, //【请求】接口 - RequestMethod: request.RequestMethod, //【请求】方式 - RequestParams: request.RequestParams, //【请求】参数 - RequestHeader: request.RequestHeader, //【请求】头部 - ResponseHeader: request.ResponseHeader, //【返回】头部 - ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 - ResponseContentLength: request.ResponseContentLength, //【返回】大小 - ResponseTime: primitive.NewDateTimeFromTime(request.ResponseTime), //【返回】时间 - SdkVersion: sdkVersion, //【程序】Sdk版本 + LogTime: primitive.NewDateTimeFromTime(request.RequestTime), //【记录】时间 + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gourl.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: gourl.UriParse(request.RequestUri).Path, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + SdkVersion: sdkVersion, //【程序】Sdk版本 } if request.ResponseHeader.Get("Content-Type") == "image/jpeg" || request.ResponseHeader.Get("Content-Type") == "image/png" || request.ResponseHeader.Get("Content-Type") == "image/jpg" { c.zapLog.WithTraceId(ctx).Sugar().Infof("[golog.api.MongoMiddleware.type]:%s %s", data.RequestUri, request.ResponseHeader.Get("Content-Type")) @@ -233,18 +241,19 @@ func (c *ApiClient) MongoMiddleware(ctx context.Context, request gorequest.Respo // MongoMiddlewareXml 中间件 func (c *ApiClient) MongoMiddlewareXml(ctx context.Context, request gorequest.Response, sdkVersion string) { data := apiMongolLog{ - RequestTime: primitive.NewDateTimeFromTime(request.RequestTime), //【请求】时间 - RequestUri: request.RequestUri, //【请求】链接 - RequestUrl: gourl.UriParse(request.RequestUri).Url, //【请求】链接 - RequestApi: gourl.UriParse(request.RequestUri).Path, //【请求】接口 - RequestMethod: request.RequestMethod, //【请求】方式 - RequestParams: request.RequestParams, //【请求】参数 - RequestHeader: request.RequestHeader, //【请求】头部 - ResponseHeader: request.ResponseHeader, //【返回】头部 - ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 - ResponseContentLength: request.ResponseContentLength, //【返回】大小 - ResponseTime: primitive.NewDateTimeFromTime(request.ResponseTime), //【返回】时间 - SdkVersion: sdkVersion, //【程序】Sdk版本 + LogTime: primitive.NewDateTimeFromTime(request.RequestTime), //【记录】时间 + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gourl.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: gourl.UriParse(request.RequestUri).Path, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + SdkVersion: sdkVersion, //【程序】Sdk版本 } if request.ResponseHeader.Get("Content-Type") == "image/jpeg" || request.ResponseHeader.Get("Content-Type") == "image/png" || request.ResponseHeader.Get("Content-Type") == "image/jpg" { c.zapLog.WithTraceId(ctx).Sugar().Infof("[golog.api.MongoMiddlewareXml.type]:%s %s", data.RequestUri, request.ResponseHeader.Get("Content-Type")) @@ -271,18 +280,19 @@ func (c *ApiClient) MongoMiddlewareXml(ctx context.Context, request gorequest.Re // MongoMiddlewareCustom 中间件 func (c *ApiClient) MongoMiddlewareCustom(ctx context.Context, api string, request gorequest.Response, sdkVersion string) { data := apiMongolLog{ - RequestTime: primitive.NewDateTimeFromTime(request.RequestTime), //【请求】时间 - RequestUri: request.RequestUri, //【请求】链接 - RequestUrl: gourl.UriParse(request.RequestUri).Url, //【请求】链接 - RequestApi: api, //【请求】接口 - RequestMethod: request.RequestMethod, //【请求】方式 - RequestParams: request.RequestParams, //【请求】参数 - RequestHeader: request.RequestHeader, //【请求】头部 - ResponseHeader: request.ResponseHeader, //【返回】头部 - ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 - ResponseContentLength: request.ResponseContentLength, //【返回】大小 - ResponseTime: primitive.NewDateTimeFromTime(request.ResponseTime), //【返回】时间 - SdkVersion: sdkVersion, //【程序】Sdk版本 + LogTime: primitive.NewDateTimeFromTime(request.RequestTime), //【记录】时间 + RequestTime: dorm.BsonTime(request.RequestTime), //【请求】时间 + RequestUri: request.RequestUri, //【请求】链接 + RequestUrl: gourl.UriParse(request.RequestUri).Url, //【请求】链接 + RequestApi: api, //【请求】接口 + RequestMethod: request.RequestMethod, //【请求】方式 + RequestParams: request.RequestParams, //【请求】参数 + RequestHeader: request.RequestHeader, //【请求】头部 + ResponseHeader: request.ResponseHeader, //【返回】头部 + ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 + ResponseContentLength: request.ResponseContentLength, //【返回】大小 + ResponseTime: dorm.BsonTime(request.ResponseTime), //【返回】时间 + SdkVersion: sdkVersion, //【程序】Sdk版本 } if request.ResponseHeader.Get("Content-Type") == "image/jpeg" || request.ResponseHeader.Get("Content-Type") == "image/png" || request.ResponseHeader.Get("Content-Type") == "image/jpg" { c.zapLog.WithTraceId(ctx).Sugar().Infof("[golog.api.MongoMiddlewareCustom.type]:%s %s", data.RequestUri, request.ResponseHeader.Get("Content-Type")) diff --git a/vendor/go.dtapp.net/golog/const.go b/vendor/go.dtapp.net/golog/const.go index ba1bdf5..f7144db 100644 --- a/vendor/go.dtapp.net/golog/const.go +++ b/vendor/go.dtapp.net/golog/const.go @@ -1,5 +1,5 @@ package golog const ( - Version = "1.0.72" + Version = "1.0.73" ) diff --git a/vendor/go.dtapp.net/golog/gin.go b/vendor/go.dtapp.net/golog/gin.go index 6e8e773..4236597 100644 --- a/vendor/go.dtapp.net/golog/gin.go +++ b/vendor/go.dtapp.net/golog/gin.go @@ -140,10 +140,10 @@ func NewGinClient(config *GinClientConfig) (*GinClient, error) { c.log.mongo = true // 创建时间序列集合 - c.mongoCreateCollection() + c.mongoCreateCollection(ctx) // 创建索引 - c.mongoCreateIndexes() + c.mongoCreateIndexes(ctx) } diff --git a/vendor/go.dtapp.net/golog/gin_gorm.go b/vendor/go.dtapp.net/golog/gin_gorm.go index 6848caf..1edfdff 100644 --- a/vendor/go.dtapp.net/golog/gin_gorm.go +++ b/vendor/go.dtapp.net/golog/gin_gorm.go @@ -248,10 +248,15 @@ func (c *GinClient) gormRecordXml(ginCtx *gin.Context, traceId string, requestTi } // GormQuery 查询 -func (c *GinClient) GormQuery() *gorm.DB { +func (c *GinClient) GormQuery(ctx context.Context) *gorm.DB { return c.gormClient.Db.Table(c.gormConfig.tableName) } +// GormDelete 删除 +func (c *GinClient) GormDelete(ctx context.Context, hour int64) error { + return c.gormClient.Db.Table(c.gormConfig.tableName).Where("request_time < ?", gotime.Current().BeforeHour(hour).Format()).Delete(&ginPostgresqlLog{}).Error +} + // GormMiddleware 中间件 func (c *GinClient) GormMiddleware() gin.HandlerFunc { return func(ginCtx *gin.Context) { diff --git a/vendor/go.dtapp.net/golog/gin_mongo.go b/vendor/go.dtapp.net/golog/gin_mongo.go index 8c2e3b7..77ed3e7 100644 --- a/vendor/go.dtapp.net/golog/gin_mongo.go +++ b/vendor/go.dtapp.net/golog/gin_mongo.go @@ -75,24 +75,24 @@ func NewGinMongoClient(config *GinMongoClientConfig) (*GinClient, error) { c.log.mongo = true // 创建时间序列集合 - c.mongoCreateCollection() + c.mongoCreateCollection(ctx) // 创建索引 - c.mongoCreateIndexes() + c.mongoCreateIndexes(ctx) return c, nil } // 创建时间序列集合 -func (c *GinClient) mongoCreateCollection() { +func (c *GinClient) mongoCreateCollection(ctx context.Context) { var commandResult bson.M - commandErr := c.mongoClient.Db.Database(c.mongoConfig.databaseName).RunCommand(context.TODO(), bson.D{{ + commandErr := c.mongoClient.Db.Database(c.mongoConfig.databaseName).RunCommand(ctx, bson.D{{ "listCollections", 1, }}).Decode(&commandResult) if commandErr != nil { c.zapLog.WithLogger().Sugar().Error("检查时间序列集合:", commandErr) } else { - err := c.mongoClient.Db.Database(c.mongoConfig.databaseName).CreateCollection(context.TODO(), c.mongoConfig.collectionName, options.CreateCollection().SetTimeSeriesOptions(options.TimeSeries().SetTimeField("request_time"))) + err := c.mongoClient.Db.Database(c.mongoConfig.databaseName).CreateCollection(ctx, c.mongoConfig.collectionName, options.CreateCollection().SetTimeSeriesOptions(options.TimeSeries().SetTimeField("log_time"))) if err != nil { c.zapLog.WithLogger().Sugar().Error("创建时间序列集合:", err) } @@ -100,80 +100,84 @@ func (c *GinClient) mongoCreateCollection() { } // 创建索引 -func (c *GinClient) mongoCreateIndexes() { - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{ +func (c *GinClient) mongoCreateIndexes(ctx context.Context) { + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ Keys: bson.D{ {"trace_id", 1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ + Keys: bson.D{ + {"log_time", -1}, + }})) + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ Keys: bson.D{ {"request_time", -1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ Keys: bson.D{ {"request_method", 1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ Keys: bson.D{ {"request_proto", 1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ Keys: bson.D{ {"request_ip", 1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ Keys: bson.D{ {"request_ip_country", 1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ Keys: bson.D{ {"request_ip_region", 1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ Keys: bson.D{ {"request_ip_province", 1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ Keys: bson.D{ {"request_ip_city", 1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ Keys: bson.D{ {"request_ip_isp", 1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ Keys: bson.D{ {"response_time", -1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ Keys: bson.D{ {"response_code", 1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ Keys: bson.D{ {"system_host_name", 1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ Keys: bson.D{ {"system_inside_ip", 1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ Keys: bson.D{ {"system_os", -1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ Keys: bson.D{ {"system_arch", -1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ Keys: bson.D{ {"system_cpu_quantity", 1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ Keys: bson.D{ {"go_version", -1}, }})) - c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{ + c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{ Keys: bson.D{ {"sdk_version", -1}, }})) @@ -182,8 +186,9 @@ func (c *GinClient) mongoCreateIndexes() { // 模型结构体 type ginMongoLog struct { LogId primitive.ObjectID `json:"log_id,omitempty" bson:"_id,omitempty"` //【记录】编号 - TraceId string `json:"trace_id,omitempty" bson:"trace_id,omitempty"` //【系统】跟踪编号 - RequestTime primitive.DateTime `json:"request_time,omitempty" bson:"request_time,omitempty"` //【请求】时间 + LogTime primitive.DateTime `json:"log_time,omitempty" bson:"log_time,omitempty"` //【记录】时间 + TraceId string `json:"trace_id,omitempty" bson:"trace_id,omitempty"` //【记录】跟踪编号 + RequestTime dorm.BsonTime `json:"request_time,omitempty" bson:"request_time,omitempty"` //【请求】时间 RequestUri string `json:"request_uri,omitempty" bson:"request_uri,omitempty"` //【请求】请求链接 域名+路径+参数 RequestUrl string `json:"request_url,omitempty" bson:"request_url,omitempty"` //【请求】请求链接 域名+路径 RequestApi string `json:"request_api,omitempty" bson:"request_api,omitempty"` //【请求】请求接口 路径 @@ -200,7 +205,7 @@ type ginMongoLog struct { RequestIpCity string `json:"request_ip_city,omitempty" bson:"request_ip_city,omitempty"` //【请求】请求客户端城市 RequestIpIsp string `json:"request_ip_isp,omitempty" bson:"request_ip_isp,omitempty"` //【请求】请求客户端运营商 RequestHeader interface{} `json:"request_header,omitempty" bson:"request_header,omitempty"` //【请求】请求头 - ResponseTime primitive.DateTime `json:"response_time,omitempty" bson:"response_time,omitempty"` //【返回】时间 + ResponseTime dorm.BsonTime `json:"response_time,omitempty" bson:"response_time,omitempty"` //【返回】时间 ResponseCode int `json:"response_code,omitempty" bson:"response_code,omitempty"` //【返回】状态码 ResponseMsg string `json:"response_msg,omitempty" bson:"response_msg,omitempty"` //【返回】描述 ResponseData interface{} `json:"response_data,omitempty" bson:"response_data,omitempty"` //【返回】数据 @@ -217,17 +222,14 @@ type ginMongoLog struct { // 记录日志 func (c *GinClient) mongoRecord(mongoLog ginMongoLog) (err error) { - mongoLog.SystemHostName = c.mongoConfig.hostname - mongoLog.SystemInsideIp = c.mongoConfig.insideIp - mongoLog.GoVersion = c.mongoConfig.goVersion - - mongoLog.SdkVersion = Version - - mongoLog.SystemOs = c.config.os - mongoLog.SystemArch = c.config.arch - mongoLog.SystemCpuQuantity = c.config.maxProCs - - mongoLog.LogId = primitive.NewObjectID() + mongoLog.SystemHostName = c.mongoConfig.hostname //【系统】主机名 + mongoLog.SystemInsideIp = c.mongoConfig.insideIp //【系统】内网ip + mongoLog.GoVersion = c.mongoConfig.goVersion //【程序】Go版本 + mongoLog.SdkVersion = Version //【程序】Sdk版本 + mongoLog.SystemOs = c.config.os //【系统】系统类型 + mongoLog.SystemArch = c.config.arch //【系统】系统架构 + mongoLog.SystemCpuQuantity = c.config.maxProCs //【系统】CPU核数 + mongoLog.LogId = primitive.NewObjectID() //【记录】编号 _, err = c.mongoClient.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).InsertOne(mongoLog) if err != nil { @@ -244,8 +246,9 @@ func (c *GinClient) mongoRecordJson(ginCtx *gin.Context, traceId string, request } data := ginMongoLog{ - TraceId: traceId, //【系统】跟踪编号 - RequestTime: primitive.NewDateTimeFromTime(requestTime), //【请求】时间 + TraceId: traceId, //【记录】跟踪编号 + LogTime: primitive.NewDateTimeFromTime(requestTime), //【记录】时间 + RequestTime: dorm.BsonTime(requestTime), //【请求】时间 RequestUrl: ginCtx.Request.RequestURI, //【请求】请求链接 RequestApi: gourl.UriFilterExcludeQueryString(ginCtx.Request.RequestURI), //【请求】请求接口 RequestMethod: ginCtx.Request.Method, //【请求】请求方式 @@ -260,7 +263,7 @@ func (c *GinClient) mongoRecordJson(ginCtx *gin.Context, traceId string, request RequestIpCity: requestClientIpCity, //【请求】请求客户端城市 RequestIpIsp: requestClientIpIsp, //【请求】请求客户端运营商 RequestHeader: ginCtx.Request.Header, //【请求】请求头 - ResponseTime: primitive.NewDateTimeFromTime(gotime.Current().Time), //【返回】时间 + ResponseTime: dorm.BsonTime(gotime.Current().Time), //【返回】时间 ResponseCode: responseCode, //【返回】状态码 ResponseData: c.jsonUnmarshal(responseBody), //【返回】数据 CostTime: endTime - startTime, //【系统】花费时间 @@ -296,8 +299,9 @@ func (c *GinClient) mongoRecordXml(ginCtx *gin.Context, traceId string, requestT } data := ginMongoLog{ - TraceId: traceId, //【系统】跟踪编号 - RequestTime: primitive.NewDateTimeFromTime(requestTime), //【请求】时间 + TraceId: traceId, //【记录】跟踪编号 + LogTime: primitive.NewDateTimeFromTime(requestTime), //【记录】时间 + RequestTime: dorm.BsonTime(requestTime), //【请求】时间 RequestUrl: ginCtx.Request.RequestURI, //【请求】请求链接 RequestApi: gourl.UriFilterExcludeQueryString(ginCtx.Request.RequestURI), //【请求】请求接口 RequestMethod: ginCtx.Request.Method, //【请求】请求方式 @@ -312,7 +316,7 @@ func (c *GinClient) mongoRecordXml(ginCtx *gin.Context, traceId string, requestT RequestIpCity: requestClientIpCity, //【请求】请求客户端城市 RequestIpIsp: requestClientIpIsp, //【请求】请求客户端运营商 RequestHeader: ginCtx.Request.Header, //【请求】请求头 - ResponseTime: primitive.NewDateTimeFromTime(gotime.Current().Time), //【返回】时间 + ResponseTime: dorm.BsonTime(gotime.Current().Time), //【返回】时间 ResponseCode: responseCode, //【返回】状态码 ResponseData: c.jsonUnmarshal(responseBody), //【返回】数据 CostTime: endTime - startTime, //【系统】花费时间 @@ -342,8 +346,14 @@ func (c *GinClient) mongoRecordXml(ginCtx *gin.Context, traceId string, requestT } // MongoQuery 查询 -func (c *GinClient) MongoQuery() *dorm.MongoClient { - return c.mongoClient.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName) +func (c *GinClient) MongoQuery(ctx context.Context) *mongo.Collection { + return c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName) +} + +// MongoDelete 删除 +func (c *GinClient) MongoDelete(ctx context.Context, hour int64) (*mongo.DeleteResult, error) { + filter := bson.D{{"log_time", bson.D{{"$lt", primitive.NewDateTimeFromTime(gotime.Current().BeforeHour(hour).Time)}}}} + return c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).DeleteMany(ctx, filter) } // MongoMiddleware 中间件 diff --git a/vendor/modules.txt b/vendor/modules.txt index a40bc93..7c1fc88 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -248,19 +248,19 @@ github.com/xdg-go/stringprep # github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a ## explicit; go 1.12 github.com/youmark/pkcs8 -# go.dtapp.net/dorm v1.0.32 +# go.dtapp.net/dorm v1.0.33 ## explicit; go 1.19 go.dtapp.net/dorm # go.dtapp.net/goarray v1.0.1 ## explicit; go 1.18 go.dtapp.net/goarray -# go.dtapp.net/goip v1.0.29 +# go.dtapp.net/goip v1.0.30 ## explicit; go 1.19 go.dtapp.net/goip go.dtapp.net/goip/ip2region go.dtapp.net/goip/v4 go.dtapp.net/goip/v6 -# go.dtapp.net/golog v1.0.72 +# go.dtapp.net/golog v1.0.73 ## explicit; go 1.19 go.dtapp.net/golog # go.dtapp.net/gorandom v1.0.1