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 { /// /// Job基类,主要给子类继承记录日志方法 /// public class JobBase { /// /// 获取日志键值 /// public string LogKey { get; private set; } /// /// 执行指定任务 /// /// /// public void ExecuteJob(IJobExecutionContext context, Func 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 { } } /// /// 将调试信息写入日志文件 /// /// 日志文件名前缀 /// 要记录的调试信息 /// 仅当配置中LogDeubgEnable为true时才会实际写入日志 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()); } } /// /// 将信息写入日志文件 /// /// 日志文件名前缀 /// 要记录的信息内容 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()); } /// /// 将错误信息写入日志文件 /// /// 日志文件名前缀 /// 要记录的错误信息 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()); } /// /// 将异常信息写入日志文件 /// /// 日志文件名前缀 /// 要记录的异常对象 /// /// 该方法会收集异常的详细信息,包括消息、来源、堆栈跟踪、类型和目标站点, /// 并通过QuartzLogger将信息写入以"Error_"为前缀的日志文件中 /// 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()); } /// /// 将错误信息和异常详情写入日志文件 /// /// 日志文件名前缀 /// 自定义错误消息 /// 发生的异常对象 /// /// 该方法会格式化异常信息,包括消息、来源、堆栈跟踪、类型和目标站点, /// 并通过QuartzLogger写入到以"Error_"为前缀的日志文件中 /// 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()); } } }