刘磊
2025-04-19 bd02cb3fa0fa75ffafb2cf17501929b1b1e0029b
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
85
86
87
88
89
90
91
92
93
using HslCommunication;
using Quartz;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_Core.LogHelper;
 
namespace WIDESEAWCS_QuartzJob
{
    public class JobBase
    {
        /// <summary>
        /// 执行指定任务
        /// </summary>
        /// <param name="context"></param>
        /// <param name="action"></param>
        public async void ExecuteJob(IJobExecutionContext context, Func<Task> func)
        {
            StringBuilder stringBuilder = new StringBuilder();
            //JOBID
            int jobid = context.JobDetail.Key.Name.ObjToInt();
            //JOB组名
            string groupName = context.JobDetail.Key.Group;
            //日志
            stringBuilder.AppendLine($"【{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}】【执行开始】【Id:{jobid},组别:{groupName}】");
            try
            {
                await func();//执行任务
                stringBuilder.AppendLine($"【{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}】【执行成功】");
 
                JobDataMap jobPars = context.JobDetail.JobDataMap;
                stringBuilder.AppendLine(jobPars.GetString("JobParams"));
            }
            catch (Exception ex)
            {
                JobExecutionException e2 = new JobExecutionException(ex);
                //true  是立即重新执行任务 
                e2.RefireImmediately = true;
                stringBuilder.AppendLine($"【{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}】【执行失败:{ex.Message}】");
                stringBuilder.AppendLine($"【堆栈信息:{ex.StackTrace}】");
            }
            finally
            {
                //QuartzLogger.WriteLogToFile($"Debug_{fileName}", msg);
            }
        }
 
        public void WriteDebug(string fileName, string msg)
        {
            if( AppSettings.app(new string[] { "LogDeubgEnable" }).ObjToBool())
            {
                StringBuilder builder = new StringBuilder(msg);
                builder.Append(Environment.NewLine);
                builder.Append(Environment.NewLine);
                QuartzLogger.WriteLogToFile($"Debug_{fileName}", builder.ToString());
            }
        }
 
        public void WriteInfo(string fileName, string msg)
        {
            StringBuilder builder = new StringBuilder(msg);
            builder.Append(Environment.NewLine);
            builder.Append(Environment.NewLine);
            QuartzLogger.WriteLogToFile($"Info_{fileName}", builder.ToString());
        }
 
        public void WriteError(string fileName, string msg, Exception ex)
        {
            StringBuilder builder = new StringBuilder(msg);
            builder.Append(Environment.NewLine);
            builder.Append(StringResources.Language.ExceptionMessage);
            builder.Append(ex.Message);
            builder.Append(Environment.NewLine);
            builder.Append(StringResources.Language.ExceptionSource);
            builder.Append(ex.Source);
            builder.Append(Environment.NewLine);
            builder.Append(StringResources.Language.ExceptionStackTrace);
            builder.Append(ex.StackTrace);
            builder.Append(Environment.NewLine);
            builder.Append(StringResources.Language.ExceptionType);
            builder.Append(ex.GetType().ToString());
            builder.Append(Environment.NewLine);
            builder.Append(StringResources.Language.ExceptionTargetSite);
            builder.Append(ex.TargetSite?.ToString());
            builder.Append(Environment.NewLine);
            builder.Append(Environment.NewLine);
            QuartzLogger.WriteLogToFile($"Error_{fileName}", builder.ToString());
        }
    }
}