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 { /// /// 执行指定任务 /// /// /// public async void ExecuteJob(IJobExecutionContext context, Func 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()); } } }