| 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()); | 
|         } | 
|     } | 
| } |