public async Task <bool> AddAsync(QzRunLogEntity log)
        {
            #region mongo
            QzRunLogMoEntity mlog = new QzRunLogMoEntity();
            mlog.AppId        = log.AppId;
            mlog.TasksQzId    = log.TasksQzId;
            mlog.LogText      = log.LogText;
            mlog.LogTime      = log.LogTime?.AddHours(8);
            mlog.Milliseconds = log.Milliseconds;
            mlog.LogType      = (int)log.LogType;
            await _mongoRepository.InsertAsync(mlog);

            #endregion

            var result = false;
            var list   = await _dbContext.QzRunLogs.Where(x => x.TasksQzId == log.TasksQzId && x.AppId == log.AppId).ToListAsync();

            if (list.Count >= _logCount.ObjToInt())
            {
                var oldLog = list.OrderBy(x => x.LogTime).First();
                log.Id = oldLog.Id;
                _dbContext.Update(log);
                var y = await _dbContext.SaveChangesAsync();

                result = y > 0;
                return(result);
            }
            await _dbContext.QzRunLogs.AddAsync(log);

            int x = await _dbContext.SaveChangesAsync();

            result = x > 0;
            return(result);
        }
Пример #2
0
        /// <summary>
        /// 执行指定任务
        /// </summary>
        /// <param name="context"></param>
        /// <param name="action"></param>
        public async Task <string> ExecuteJob(IJobExecutionContext context, Func <Task <string> > func)
        {
            QzRunLogEntity qzlog = new QzRunLogEntity();

            qzlog.TasksQzId = context.JobDetail.Key.Name.ObjToInt();
            qzlog.AppId     = context.JobDetail.Key.Group;
            qzlog.LogTime   = DateTime.Now;
            qzlog.LogType   = SysLogType.Normal;

            string jobHistory = $"【{DateTime.Now}】执行任务【Id:{context.JobDetail.Key.Name},组别:{context.JobDetail.Key.Group}】";

            try
            {
                var s = context.Trigger.Key.Name;
                //记录Job时间
                Stopwatch stopwatch = new Stopwatch();
                stopwatch.Start();
                var msg = await func();//执行任务

                stopwatch.Stop();
                jobHistory += $",【执行成功】,完成时间:{stopwatch.Elapsed.TotalMilliseconds.ToString("00")}毫秒";
                //WriteLog(context.Trigger.Key.Name.Replace("-", ""), $"{context.Trigger.Key.Name}定时任务运行一切OK", "任务结束");
                qzlog.LogText =
                    $" 响应结果:[{msg}]";
                qzlog.Milliseconds = $"{stopwatch.Elapsed.TotalMilliseconds.ToString("00")}毫秒";
            }
            catch (Exception ex)
            {
                JobExecutionException e2 = new JobExecutionException(ex);
                //true  是立即重新执行任务
                e2.RefireImmediately = true;
                //WriteErrorLog(context.Trigger.Key.Name.Replace("-", ""), $"{context.Trigger.Key.Name}任务运行异常", ex);
                jobHistory   += $",【执行失败】,异常日志:{ex.Message}";
                qzlog.LogText =
                    $"【执行失败】,异常日志:{ex.Message}";
                qzlog.LogType = SysLogType.Warn;
            }
            await _qzRunLogService.AddAsync(qzlog);

            Console.Out.WriteLine(jobHistory);
            return(jobHistory);
        }
Пример #3
0
        public async Task <bool> AddAsync(QzRunLogEntity log)
        {
            var result = false;
            var list   = await _dbContext.QzRunLogs.Where(x => x.TasksQzId == log.TasksQzId && x.AppId == log.AppId).ToListAsync();

            if (list.Count >= _logCount.ObjToInt())
            {
                var oldLog = list.OrderBy(x => x.LogTime).First();
                log.Id = oldLog.Id;
                _dbContext.Update(log);
                var y = await _dbContext.SaveChangesAsync();

                result = y > 0;
                return(result);
            }
            await _dbContext.QzRunLogs.AddAsync(log);

            int x = await _dbContext.SaveChangesAsync();

            result = x > 0;
            return(result);
        }