From 60b50bf6f83804ef9de6e49a3dfa84fce7a43c52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=85=89=E6=98=A5?= Date: Thu, 22 Sep 2022 14:01:10 +0800 Subject: [PATCH] - update --- client.go | 4 +-- const.go | 2 +- model.go | 51 ++++++++++++++++++++----------------- model_task_log.go | 65 +++++++++++++++++++++++++++++++++++++++++++++++ run.go | 39 ++-------------------------- 5 files changed, 97 insertions(+), 64 deletions(-) diff --git a/client.go b/client.go index 808e0c3..d64ce22 100644 --- a/client.go +++ b/client.go @@ -108,8 +108,8 @@ func NewClient(config *ClientConfig) (*Client, error) { c.mongoConfig.databaseName = databaseName } - c.mongoCreateCollectionTaskLog(ctx) - c.mongoCreateIndexesTaskLog(ctx) + TaskLog{}.createCollection(ctx, c.zapLog, c.mongoClient, c.mongoConfig.databaseName) + TaskLog{}.createIndexes(ctx, c.zapLog, c.mongoClient, c.mongoConfig.databaseName) c.mongoConfig.stats = true } diff --git a/const.go b/const.go index 931ecec..6bea270 100644 --- a/const.go +++ b/const.go @@ -1,6 +1,6 @@ package gojobs const ( - Version = "1.0.105" + Version = "1.0.106" SpecifyIpNull = "0.0.0.0" ) diff --git a/model.go b/model.go index 9657b98..a1ef658 100644 --- a/model.go +++ b/model.go @@ -4,10 +4,7 @@ import ( "context" "go.dtapp.net/gojobs/jobs_gorm_model" "go.dtapp.net/gotime" - "go.mongodb.org/mongo-driver/bson" - "go.mongodb.org/mongo-driver/bson/primitive" - "go.mongodb.org/mongo-driver/mongo" - "go.mongodb.org/mongo-driver/mongo/options" + "go.dtapp.net/gotrace_id" ) // 创建模型 @@ -35,29 +32,35 @@ func (c *Client) GormTaskLogDelete(ctx context.Context, hour int64) error { return err } -// MongoTaskLogDelete 删除 -func (c *Client) MongoTaskLogDelete(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.Database(c.mongoConfig.databaseName).Collection(TaskLog{}.CollectionName()).DeleteMany(ctx, filter) -} - -// 创建时间序列集合 -func (c *Client) mongoCreateCollectionTaskLog(ctx context.Context) { - err := c.mongoClient.Database(c.mongoConfig.databaseName).CreateCollection(ctx, TaskLog{}.CollectionName(), options.CreateCollection().SetTimeSeriesOptions(options.TimeSeries().SetTimeField("log_time"))) - if err != nil { - c.zapLog.WithTraceId(ctx).Sugar().Errorf("创建时间序列集合:%s", err) +// TaskLogRecord 记录 +func (c *Client) TaskLogRecord(ctx context.Context, task jobs_gorm_model.Task, taskResultCode int, taskResultDesc string) { + runId := gotrace_id.GetTraceIdContext(ctx) + c.GormTaskLogRecord(ctx, task, runId, taskResultCode, taskResultDesc) + if c.mongoConfig.stats { + c.MongoTaskLogRecord(ctx, task, runId, taskResultCode, taskResultDesc) } } -// 创建索引 -func (c *Client) mongoCreateIndexesTaskLog(ctx context.Context) { - _, err := c.mongoClient.Database(c.mongoConfig.databaseName).Collection(TaskLog{}.CollectionName()).CreateManyIndexes(ctx, []mongo.IndexModel{{ - Keys: bson.D{{ - Key: "log_time", - Value: -1, - }}, - }}) +// GormTaskLogRecord 记录 +func (c *Client) GormTaskLogRecord(ctx context.Context, task jobs_gorm_model.Task, runId string, taskResultCode int, taskResultDesc string) { + + taskLog := jobs_gorm_model.TaskLog{ + TaskId: task.Id, + TaskRunId: runId, + TaskResultCode: taskResultCode, + TaskResultDesc: taskResultDesc, + SystemHostName: c.config.systemHostName, + SystemInsideIp: c.config.systemInsideIp, + SystemOs: c.config.systemOs, + SystemArch: c.config.systemArch, + GoVersion: c.config.goVersion, + SdkVersion: c.config.sdkVersion, + SystemOutsideIp: c.config.systemOutsideIp, + } + err := c.gormClient.GetDb().Create(&taskLog).Error if err != nil { - c.zapLog.WithTraceId(ctx).Sugar().Errorf("创建索引:%s", err) + c.zapLog.WithTraceId(ctx).Sugar().Errorf("记录失败:%s", err) + c.zapLog.WithTraceId(ctx).Sugar().Errorf("记录数据:%+v", taskLog) } + } diff --git a/model_task_log.go b/model_task_log.go index c251b90..58d0898 100644 --- a/model_task_log.go +++ b/model_task_log.go @@ -1,8 +1,15 @@ package gojobs import ( + "context" "go.dtapp.net/dorm" + "go.dtapp.net/gojobs/jobs_gorm_model" + "go.dtapp.net/golog" + "go.dtapp.net/gotime" + "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/primitive" + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" ) // TaskLog 任务日志模型 @@ -32,3 +39,61 @@ type TaskLog struct { func (TaskLog) CollectionName() string { return "task_log" } + +// 创建时间序列集合 +func (TaskLog) createCollection(ctx context.Context, zapLog *golog.ZapLog, db *dorm.MongoClient, databaseName string) { + err := db.Database(databaseName).CreateCollection(ctx, TaskLog{}.CollectionName(), options.CreateCollection().SetTimeSeriesOptions(options.TimeSeries().SetTimeField("log_time"))) + if err != nil { + zapLog.WithTraceId(ctx).Sugar().Errorf("创建时间序列集合:%s", err) + } +} + +// 创建索引 +func (TaskLog) createIndexes(ctx context.Context, zapLog *golog.ZapLog, db *dorm.MongoClient, databaseName string) { + _, err := db.Database(databaseName).Collection(TaskLog{}.CollectionName()).CreateManyIndexes(ctx, []mongo.IndexModel{{ + Keys: bson.D{{ + Key: "log_time", + Value: -1, + }}, + }}) + if err != nil { + zapLog.WithTraceId(ctx).Sugar().Errorf("创建索引:%s", err) + } +} + +// MongoTaskLogRecord 记录 +func (c *Client) MongoTaskLogRecord(ctx context.Context, task jobs_gorm_model.Task, runId string, taskResultCode int, taskResultDesc string) { + + taskLog := TaskLog{ + LogId: primitive.NewObjectID(), + LogTime: primitive.NewDateTimeFromTime(gotime.Current().Time), + } + + taskLog.Task.Id = task.Id + taskLog.Task.RunId = runId + taskLog.Task.ResultCode = taskResultCode + taskLog.Task.ResultDesc = taskResultDesc + taskLog.Task.ResultTime = dorm.NewBsonTimeCurrent() + + taskLog.System.HostName = c.config.systemHostName + taskLog.System.InsideIp = c.config.systemInsideIp + taskLog.System.OutsideIp = c.config.systemOutsideIp + taskLog.System.Os = c.config.systemOs + taskLog.System.Arch = c.config.systemArch + + taskLog.Version.Go = c.config.goVersion + taskLog.Version.Sdk = c.config.sdkVersion + + _, err := c.mongoClient.Database(c.mongoConfig.databaseName).Collection(TaskLog{}.CollectionName()).InsertOne(ctx, taskLog) + if err != nil { + c.zapLog.WithTraceId(ctx).Sugar().Errorf("记录失败:%s", err) + c.zapLog.WithTraceId(ctx).Sugar().Errorf("记录数据:%+v", taskLog) + } + +} + +// MongoTaskLogDelete 删除 +func (c *Client) MongoTaskLogDelete(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.Database(c.mongoConfig.databaseName).Collection(TaskLog{}.CollectionName()).DeleteMany(ctx, filter) +} diff --git a/run.go b/run.go index c6bccc6..e334954 100644 --- a/run.go +++ b/run.go @@ -2,11 +2,9 @@ package gojobs import ( "context" - "go.dtapp.net/dorm" "go.dtapp.net/gojobs/jobs_gorm_model" "go.dtapp.net/gotime" "go.dtapp.net/gotrace_id" - "go.mongodb.org/mongo-driver/bson/primitive" ) // Run 运行 @@ -18,42 +16,9 @@ func (c *Client) Run(ctx context.Context, task jobs_gorm_model.Task, taskResultC return } - c.gormClient.GetDb().Create(&jobs_gorm_model.TaskLog{ - TaskId: task.Id, - TaskRunId: runId, - TaskResultCode: taskResultCode, - TaskResultDesc: taskResultDesc, - SystemHostName: c.config.systemHostName, - SystemInsideIp: c.config.systemInsideIp, - SystemOs: c.config.systemOs, - SystemArch: c.config.systemArch, - GoVersion: c.config.goVersion, - SdkVersion: c.config.sdkVersion, - SystemOutsideIp: c.config.systemOutsideIp, - }) + c.GormTaskLogRecord(ctx, task, runId, taskResultCode, taskResultDesc) if c.mongoConfig.stats { - - taskLog := TaskLog{ - LogId: primitive.NewObjectID(), - LogTime: primitive.NewDateTimeFromTime(gotime.Current().Time), - } - - taskLog.Task.Id = task.Id - taskLog.Task.RunId = runId - taskLog.Task.ResultCode = taskResultCode - taskLog.Task.ResultDesc = taskResultDesc - taskLog.Task.ResultTime = dorm.NewBsonTimeCurrent() - - taskLog.System.HostName = c.config.systemHostName - taskLog.System.InsideIp = c.config.systemInsideIp - taskLog.System.OutsideIp = c.config.systemOutsideIp - taskLog.System.Os = c.config.systemOs - taskLog.System.Arch = c.config.systemArch - - taskLog.Version.Go = c.config.goVersion - taskLog.Version.Sdk = c.config.sdkVersion - - c.mongoClient.Database(c.mongoConfig.databaseName).Collection(TaskLog{}.CollectionName()).InsertOne(ctx, taskLog) + c.MongoTaskLogRecord(ctx, task, runId, taskResultCode, taskResultDesc) } switch taskResultCode {