master v1.0.106
李光春 2 years ago
parent 11884afa4f
commit 60b50bf6f8

@ -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
}

@ -1,6 +1,6 @@
package gojobs
const (
Version = "1.0.105"
Version = "1.0.106"
SpecifyIpNull = "0.0.0.0"
)

@ -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)
}
}

@ -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)
}

@ -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 {

Loading…
Cancel
Save