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
|
{
|
/// <summary>
|
/// Job基类,主要给子类继承记录日志方法
|
/// </summary>
|
public class JobBase
|
{
|
/// <summary>
|
/// 获取日志键值
|
/// </summary>
|
public string LogKey { get; private set; }
|
|
/// <summary>
|
/// 执行指定任务
|
/// </summary>
|
/// <param name="context"></param>
|
/// <param name="func"></param>
|
public void ExecuteJob(IJobExecutionContext context, Func<Task> func)
|
{
|
bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value);
|
try
|
{
|
if (flag && value is IDevice device)
|
{
|
LogKey = $"{device.DeviceCode}-{device.DeviceName}";
|
}
|
else
|
{
|
LogKey = context.JobDetail.Key.Name;
|
}
|
}
|
catch (Exception ex)
|
{
|
WriteError(LogKey, ex);
|
}
|
finally
|
{
|
|
}
|
}
|
|
/// <summary>
|
/// 将调试信息写入日志文件
|
/// </summary>
|
/// <param name="fileName">日志文件名前缀</param>
|
/// <param name="msg">要记录的调试信息</param>
|
/// <remarks>仅当配置中LogDeubgEnable为true时才会实际写入日志</remarks>
|
public void WriteDebug(string fileName, string msg)
|
{
|
if (AppSettings.Get(new string[] { "LogDeubgEnable" }).ObjToBool())
|
{
|
StringBuilder builder = new StringBuilder(msg);
|
builder.Append(Environment.NewLine);
|
LoggerHelper.WriteLogToFile($"Debug_{fileName}", builder.ToString());
|
}
|
}
|
|
/// <summary>
|
/// 将信息写入日志文件
|
/// </summary>
|
/// <param name="fileName">日志文件名前缀</param>
|
/// <param name="msg">要记录的信息内容</param>
|
public void WriteInfo(string fileName, string msg)
|
{
|
StringBuilder builder = new StringBuilder(msg);
|
builder.Append(Environment.NewLine);
|
builder.Append(Environment.NewLine);
|
LoggerHelper.WriteLogToFile($"Info_{fileName}", builder.ToString());
|
}
|
|
/// <summary>
|
/// 将错误信息写入日志文件
|
/// </summary>
|
/// <param name="fileName">日志文件名前缀</param>
|
/// <param name="msg">要记录的错误信息</param>
|
public void WriteError(string fileName, string msg)
|
{
|
StringBuilder builder = new StringBuilder(msg);
|
builder.Append(Environment.NewLine);
|
builder.Append(Environment.NewLine);
|
LoggerHelper.WriteLogToFile($"Error_{fileName}", builder.ToString());
|
}
|
|
/// <summary>
|
/// 将异常信息写入日志文件
|
/// </summary>
|
/// <param name="fileName">日志文件名前缀</param>
|
/// <param name="ex">要记录的异常对象</param>
|
/// <remarks>
|
/// 该方法会收集异常的详细信息,包括消息、来源、堆栈跟踪、类型和目标站点,
|
/// 并通过QuartzLogger将信息写入以"Error_"为前缀的日志文件中
|
/// </remarks>
|
public void WriteError(string fileName, Exception ex)
|
{
|
StringBuilder builder = new StringBuilder();
|
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);
|
LoggerHelper.WriteLogToFile($"Error_{fileName}", builder.ToString());
|
}
|
|
/// <summary>
|
/// 将错误信息和异常详情写入日志文件
|
/// </summary>
|
/// <param name="fileName">日志文件名前缀</param>
|
/// <param name="msg">自定义错误消息</param>
|
/// <param name="ex">发生的异常对象</param>
|
/// <remarks>
|
/// 该方法会格式化异常信息,包括消息、来源、堆栈跟踪、类型和目标站点,
|
/// 并通过QuartzLogger写入到以"Error_"为前缀的日志文件中
|
/// </remarks>
|
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);
|
LoggerHelper.WriteLogToFile($"Error_{fileName}", builder.ToString());
|
}
|
}
|
}
|