using jiajie; using jiajie.Common; using jiajie.Common.LogHelper; using jiajie.Model.Entity; using jiajie.Services.Sys.OperateLogs; using jiajie.Services.Sys.TasksQzs; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Quartz; using System.Text; /// /// 这里要注意下,命名空间和程序集是一样的,不然反射不到 /// namespace jiajie.Tasks { public class Job_Blogs_Quartz : JobBase, IJob { public ILogger _logger = null; private readonly IOperateLogServices _operateLogServices; private readonly IHostEnvironment _environment; public Job_Blogs_Quartz( ILogger logger, IOperateLogServices operateLogServices, IHostEnvironment environment, ITasksQzServices tasksQzServices ) { _logger = logger; _operateLogServices = operateLogServices; _environment = environment; _tasksQzServices = tasksQzServices; } public async Task Execute(IJobExecutionContext context) { var executeLog = await ExecuteJob(context, async () => await Run(context)); } public async Task Run(IJobExecutionContext context) { //var list = await _blogArticleServices.Query(); // 也可以通过数据库配置,获取传递过来的参数 //JobDataMap data = context.JobDetail.JobDataMap; //int jobId = data.GetInt("JobParam"); ConsoleHelper.WriteColorLine("执行任务具体XXXXXXXXXXX", ConsoleColor.Red); _logger.LogInformation("执行任务具体XXXXXXXXXXX!"); // 可以直接获取 JobDetail 的值 var jobKey = context.JobDetail.Key; var jobId = jobKey.Name; // 也可以通过数据库配置,获取传递过来的参数 JobDataMap data = context.JobDetail.JobDataMap; List excLogs = new List(); var exclogContent = LogLock.ReadLog(Path.Combine(_environment.ContentRootPath, "Log"), $"GlobalExceptionLogs_{DateTime.Now.ToString("yyyMMdd")}.log", Encoding.UTF8); if (!string.IsNullOrEmpty(exclogContent)) { excLogs = exclogContent.Split("--------------------------------") .Where(d => !string.IsNullOrEmpty(d) && d != "\n" && d != "\r\n") .Select(d => new LogInfo { Datetime = (d.Split("|")[0]).Split(',')[0].ObjToDate(), Content = d.Split("|")[1]?.Replace("\r\n", "
"), LogColor = "EXC", Import = 9, }).ToList(); } var filterDatetime = DateTime.Now.AddHours(-1); excLogs = excLogs.Where(d => d.Datetime >= filterDatetime).ToList(); var operateLogs = new List() { }; excLogs.ForEach(m => { operateLogs.Add(new OperateLog() { LogTime = m.Datetime, Description = m.Content, IPAddress = m.IP, UserId = 0, }); }); if (operateLogs.Count > 0) { //await _operateLogServices.Add(operateLogs); } } } }