-
Notifications
You must be signed in to change notification settings - Fork 0
/
log_mgr.go
84 lines (69 loc) · 1.68 KB
/
log_mgr.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package master
import (
"context"
"github.com/qiuqiu1999/crontab/common"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"time"
)
// mongodb日志管理
type LogMgr struct {
client *mongo.Client
logCollection *mongo.Collection
}
var (
G_logMgr *LogMgr
)
func InitLogMgr() error {
var (
client *mongo.Client
err error
)
if client, err = common.InitMongo(common.MongoConfig{
ConnectTimeOut: time.Duration(G_config.MongodbConnectTimeout),
Uri: G_config.MongodbUri,
}); err != nil {
return err
}
G_logMgr = &LogMgr{
client: client,
logCollection: client.Database("cron").Collection("log"),
}
return nil
}
// 查看任务日志
func (logMgr *LogMgr) ListLog(name string, skip int, limit int) ([]*common.JobLog, error) {
var (
filter *common.JobLogFilter
logSort *common.SortLogByStartTime
cursor *mongo.Cursor
jobLog *common.JobLog
err error
)
// len(logArr)
logArr := make([]*common.JobLog, 0)
// 过滤条件
filter = &common.JobLogFilter{JobName: name}
// 按照任务开始时间倒排
logSort = &common.SortLogByStartTime{SortOrder: -1}
findOpt := options.Find()
findOpt.SetSort(logSort)
findOpt.SetSkip(int64(skip))
findOpt.SetLimit(int64(limit))
findOpt.SetSort(logSort)
// 查询
if cursor, err = logMgr.logCollection.Find(context.TODO(), filter, findOpt); err != nil {
return nil, err
}
// 延迟释放游标
defer cursor.Close(context.TODO())
for cursor.Next(context.TODO()) {
jobLog = &common.JobLog{}
// 反序列化BSON
if err = cursor.Decode(jobLog); err != nil {
continue // 有日志不合法
}
logArr = append(logArr, jobLog)
}
return logArr, nil
}