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