Exemplo n.º 1
0
        /// <summary>
        /// 分析日志
        /// </summary>
        /// <param name="runtimeLogInfo">运行日志</param>
        /// <returns></returns>
        public async Task AnalysisLogAsync(RuntimeLogInfo runtimeLogInfo)
        {
            if (runtimeLogInfo != null && runtimeLogInfo.IsNeedWarning())
            {
                var warningLogInfo = _warningLogDomainService.Create(runtimeLogInfo);
                //判断一小时之内有没有超出五条同样日志标识的记录,假如超出则不发送邮件,
                int waitDealCount = await _warningLogRepository.QueryCountAsync(m => m.FLogSign == warningLogInfo.FLogSign && m.FCreateTime >= DateTimeUtil.Now.AddHours(-1) && m.FNoticeState == NoticeState.WaitNotice && m.FIsDeleted == false);

                if (waitDealCount <= 5)
                {
                    //发送邮件
                    await _emailSendedRecordDomainService.SendEmailAsync($"你有来自项目【{runtimeLogInfo.FProjectName}】新的警告邮件", runtimeLogInfo.FContent, runtimeLogInfo.FProjectID);

                    warningLogInfo.FNoticeState = NoticeState.Noticed;
                }
                await _warningLogRepository.InsertOneAsync(warningLogInfo, keyName : "FID", ignoreFields : FID);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 分析运行的sql信息
        /// </summary>
        /// <param name="runtimeSqlInfo"></param>
        /// <returns></returns>
        public async Task AnalysisRuntimeSqlAsync(RuntimeSqlInfo runtimeSqlInfo)
        {
            await Task.Delay(1);

            if (await IsNeedWarningAsync(runtimeSqlInfo))
            {
                var warningSqlInfo = _warningSqlDomainService.Create(runtimeSqlInfo);
                //判断一小时之内有没有超出五条同样sql标识的记录,假如超出则不发送邮件,
                int waitDealCount = await _warningSqlRepository.QueryCountAsync(m => m.FSqlSign == warningSqlInfo.FSqlSign && m.FCreateTime >= DateTimeUtil.Now.AddHours(-1) && m.FNoticeState == NoticeState.WaitNotice && m.FIsDeleted == false);

                if (waitDealCount <= 5)
                {
                    //发送邮件
                    await _emailSendedRecordDomainService.SendEmailAsync($"你有来自项目【{runtimeSqlInfo.FProjectName}】新的警告邮件", runtimeSqlInfo.FSqlText, runtimeSqlInfo.FProjectID);

                    warningSqlInfo.FNoticeState = NoticeState.Noticed;
                }
                await _warningSqlRepository.InsertOneAsync(warningSqlInfo, keyName : "FID", ignoreFields : FID);
            }
        }