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