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