Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_backend
This commit is contained in:
13
database/upgrade/20231023.sql
Normal file
13
database/upgrade/20231023.sql
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
|
||||||
|
-- 调度任务记录日志字典
|
||||||
|
insert into `omc_db`.sys_dict_type values(null, '任务日志记录', 'sys_job_save_log', '1', 'maskAdmin', REPLACE(unix_timestamp(now(3)),'.',''), '', 0, '任务日志记录列表');
|
||||||
|
|
||||||
|
|
||||||
|
insert into `omc_db`.sys_dict_data values(null, 1, '不记录', '0', 'sys_job_save_log', '', '', '1', 'maskAdmin', REPLACE(unix_timestamp(now(3)),'.',''), '', 0, '不记录日志');
|
||||||
|
insert into `omc_db`.sys_dict_data values(null, 2, '记录', '1', 'sys_job_save_log', '', '', '1', 'maskAdmin', REPLACE(unix_timestamp(now(3)),'.',''), '', 0, '记录日志');
|
||||||
|
|
||||||
|
-- 调度任务记录日志字段
|
||||||
|
ALTER TABLE `omc_db`.`sys_job`
|
||||||
|
ADD COLUMN `save_log` varchar(1) NULL DEFAULT '0' COMMENT '是否记录任务日志(0不记录 1记录)' AFTER `status`;
|
||||||
|
|
||||||
|
UPDATE `omc_db`.`sys_job` SET `save_log` = '1';
|
||||||
@@ -31,33 +31,16 @@ func (s cronlog) Error(err error, msg string, keysAndValues ...any) {
|
|||||||
// 任务对象
|
// 任务对象
|
||||||
job := keysAndValues[0].(*QueueJob)
|
job := keysAndValues[0].(*QueueJob)
|
||||||
|
|
||||||
// 结果信息序列化字符串
|
// 读取任务信息进行保存日志
|
||||||
jsonByte, _ := json.Marshal(map[string]any{
|
|
||||||
"name": "failed",
|
|
||||||
"message": err.Error(),
|
|
||||||
})
|
|
||||||
jobMsg := string(jsonByte)
|
|
||||||
if len(jobMsg) > 500 {
|
|
||||||
jobMsg = jobMsg[:500]
|
|
||||||
}
|
|
||||||
|
|
||||||
// 读取任务信息创建日志对象
|
|
||||||
if data, ok := job.Data.(JobData); ok {
|
if data, ok := job.Data.(JobData); ok {
|
||||||
duration := time.Since(time.UnixMilli(job.Timestamp))
|
// 日志数据
|
||||||
sysJob := data.SysJob
|
jobLog := jobLogData{
|
||||||
if sysJob.JobID == job.Opts.JobId {
|
JobID: job.Opts.JobId,
|
||||||
sysJobLog := model.SysJobLog{
|
Timestamp: job.Timestamp,
|
||||||
JobName: sysJob.JobName,
|
SysJob: data.SysJob,
|
||||||
JobGroup: sysJob.JobGroup,
|
Result: err.Error(),
|
||||||
InvokeTarget: sysJob.InvokeTarget,
|
|
||||||
TargetParams: sysJob.TargetParams,
|
|
||||||
Status: common.STATUS_NO,
|
|
||||||
JobMsg: jobMsg,
|
|
||||||
CostTime: duration.Milliseconds(),
|
|
||||||
}
|
|
||||||
// 插入数据
|
|
||||||
repository.NewSysJobLogImpl.InsertJobLog(sysJobLog)
|
|
||||||
}
|
}
|
||||||
|
jobLog.SaveLog(common.STATUS_NO)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -72,37 +55,74 @@ func (s cronlog) Completed(result any, msg string, keysAndValues ...any) {
|
|||||||
// 任务对象
|
// 任务对象
|
||||||
job := keysAndValues[0].(*QueueJob)
|
job := keysAndValues[0].(*QueueJob)
|
||||||
|
|
||||||
// 结果信息序列化字符串
|
// 读取任务信息进行保存日志
|
||||||
jsonByte, _ := json.Marshal(map[string]any{
|
|
||||||
"name": "completed",
|
|
||||||
"message": result,
|
|
||||||
})
|
|
||||||
jobMsg := string(jsonByte)
|
|
||||||
if len(jobMsg) > 500 {
|
|
||||||
jobMsg = jobMsg[:500]
|
|
||||||
}
|
|
||||||
|
|
||||||
// 读取任务信息创建日志对象
|
|
||||||
if data, ok := job.Data.(JobData); ok {
|
if data, ok := job.Data.(JobData); ok {
|
||||||
duration := time.Since(time.UnixMilli(job.Timestamp))
|
// 日志数据
|
||||||
sysJob := data.SysJob
|
jobLog := jobLogData{
|
||||||
if sysJob.JobID == job.Opts.JobId {
|
JobID: job.Opts.JobId,
|
||||||
sysJobLog := model.SysJobLog{
|
Timestamp: job.Timestamp,
|
||||||
JobName: sysJob.JobName,
|
SysJob: data.SysJob,
|
||||||
JobGroup: sysJob.JobGroup,
|
Result: result,
|
||||||
InvokeTarget: sysJob.InvokeTarget,
|
|
||||||
TargetParams: sysJob.TargetParams,
|
|
||||||
Status: common.STATUS_YES,
|
|
||||||
JobMsg: jobMsg,
|
|
||||||
CostTime: duration.Milliseconds(),
|
|
||||||
}
|
|
||||||
// 插入数据
|
|
||||||
repository.NewSysJobLogImpl.InsertJobLog(sysJobLog)
|
|
||||||
}
|
}
|
||||||
|
jobLog.SaveLog(common.STATUS_YES)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// jobLogData 日志记录数据
|
||||||
|
type jobLogData struct {
|
||||||
|
JobID string
|
||||||
|
Timestamp int64
|
||||||
|
SysJob model.SysJob
|
||||||
|
Result any
|
||||||
|
}
|
||||||
|
|
||||||
|
// SaveLog 日志记录保存
|
||||||
|
func (jl *jobLogData) SaveLog(status string) {
|
||||||
|
// 读取任务信息
|
||||||
|
sysJob := jl.SysJob
|
||||||
|
|
||||||
|
// 任务ID与任务信息ID不相同
|
||||||
|
if jl.JobID == "" || jl.JobID != sysJob.JobID {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 任务日志不需要记录
|
||||||
|
if sysJob.SaveLog == "" || sysJob.SaveLog == common.STATUS_NO {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 结果信息key的Name
|
||||||
|
resultNmae := "failed"
|
||||||
|
if status == common.STATUS_YES {
|
||||||
|
resultNmae = "completed"
|
||||||
|
}
|
||||||
|
|
||||||
|
// 结果信息序列化字符串
|
||||||
|
jsonByte, _ := json.Marshal(map[string]any{
|
||||||
|
"name": resultNmae,
|
||||||
|
"message": jl.Result,
|
||||||
|
})
|
||||||
|
jobMsg := string(jsonByte)
|
||||||
|
if len(jobMsg) > 500 {
|
||||||
|
jobMsg = jobMsg[:500]
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建日志对象
|
||||||
|
duration := time.Since(time.UnixMilli(jl.Timestamp))
|
||||||
|
sysJobLog := model.SysJobLog{
|
||||||
|
JobName: sysJob.JobName,
|
||||||
|
JobGroup: sysJob.JobGroup,
|
||||||
|
InvokeTarget: sysJob.InvokeTarget,
|
||||||
|
TargetParams: sysJob.TargetParams,
|
||||||
|
Status: status,
|
||||||
|
JobMsg: jobMsg,
|
||||||
|
CostTime: duration.Milliseconds(),
|
||||||
|
}
|
||||||
|
// 插入数据
|
||||||
|
repository.NewSysJobLogImpl.InsertJobLog(sysJobLog)
|
||||||
|
}
|
||||||
|
|
||||||
// JobData 调度任务日志收集结构体,执行任务时传入的接收参数
|
// JobData 调度任务日志收集结构体,执行任务时传入的接收参数
|
||||||
type JobData struct {
|
type JobData struct {
|
||||||
// 触发执行cron重复多次
|
// 触发执行cron重复多次
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ type SysJob struct {
|
|||||||
Concurrent string `json:"concurrent"`
|
Concurrent string `json:"concurrent"`
|
||||||
// 任务状态(0暂停 1正常)
|
// 任务状态(0暂停 1正常)
|
||||||
Status string `json:"status"`
|
Status string `json:"status"`
|
||||||
|
// 是否记录任务日志
|
||||||
|
SaveLog string `json:"saveLog"`
|
||||||
// 创建者
|
// 创建者
|
||||||
CreateBy string `json:"createBy"`
|
CreateBy string `json:"createBy"`
|
||||||
// 创建时间
|
// 创建时间
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import (
|
|||||||
// 实例化数据层 SysJobImpl 结构体
|
// 实例化数据层 SysJobImpl 结构体
|
||||||
var NewSysJobImpl = &SysJobImpl{
|
var NewSysJobImpl = &SysJobImpl{
|
||||||
selectSql: `select job_id, job_name, job_group, invoke_target, target_params, cron_expression,
|
selectSql: `select job_id, job_name, job_group, invoke_target, target_params, cron_expression,
|
||||||
misfire_policy, concurrent, status, create_by, create_time, remark from sys_job`,
|
misfire_policy, concurrent, status, save_log, create_by, create_time, remark from sys_job`,
|
||||||
|
|
||||||
resultMap: map[string]string{
|
resultMap: map[string]string{
|
||||||
"job_id": "JobID",
|
"job_id": "JobID",
|
||||||
@@ -27,6 +27,7 @@ var NewSysJobImpl = &SysJobImpl{
|
|||||||
"misfire_policy": "MisfirePolicy",
|
"misfire_policy": "MisfirePolicy",
|
||||||
"concurrent": "Concurrent",
|
"concurrent": "Concurrent",
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
|
"save_log": "SaveLog",
|
||||||
"create_by": "CreateBy",
|
"create_by": "CreateBy",
|
||||||
"create_time": "CreateTime",
|
"create_time": "CreateTime",
|
||||||
"update_by": "UpdateBy",
|
"update_by": "UpdateBy",
|
||||||
@@ -245,6 +246,9 @@ func (r *SysJobImpl) InsertJob(sysJob model.SysJob) string {
|
|||||||
if sysJob.Status != "" {
|
if sysJob.Status != "" {
|
||||||
params["status"] = sysJob.Status
|
params["status"] = sysJob.Status
|
||||||
}
|
}
|
||||||
|
if sysJob.SaveLog != "" {
|
||||||
|
params["save_log"] = sysJob.SaveLog
|
||||||
|
}
|
||||||
if sysJob.Remark != "" {
|
if sysJob.Remark != "" {
|
||||||
params["remark"] = sysJob.Remark
|
params["remark"] = sysJob.Remark
|
||||||
}
|
}
|
||||||
@@ -308,6 +312,9 @@ func (r *SysJobImpl) UpdateJob(sysJob model.SysJob) int64 {
|
|||||||
if sysJob.Status != "" {
|
if sysJob.Status != "" {
|
||||||
params["status"] = sysJob.Status
|
params["status"] = sysJob.Status
|
||||||
}
|
}
|
||||||
|
if sysJob.SaveLog != "" {
|
||||||
|
params["save_log"] = sysJob.SaveLog
|
||||||
|
}
|
||||||
if sysJob.Remark != "" {
|
if sysJob.Remark != "" {
|
||||||
params["remark"] = sysJob.Remark
|
params["remark"] = sysJob.Remark
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user