private bool IsStatusChanged(RPA_STATUS newStatus) { return(status != newStatus); }
public async void Run() { string filePath = Path.Combine(logFileDir, logFileName); traialsCount++; // TODO // ファイルがなかった場合の処理は後で書く if (!File.Exists(filePath)) { return; } DateTime lastUpdatedTime = File.GetLastWriteTime(filePath); DateTime nMinutesAgo = DateTime.Now.AddMinutes(-this.logUpdateInterval); string logs = GetLastLogs(1); bool hasError = false; Match match = Regex.Match(logs, LOG_REGEX); if (match.Success && match.Groups.Count > 2) { for (int i = 2; i < match.Groups.Count; i++) { if (match.Groups[i].Value != "0") { hasError = true; break; } } } else { hasError = true; } if (hasError) { form1.AddLogFromAnotherThread("【エラー】書き込まれたログからエラーを検知しました"); errorsCount++; RPA_STATUS newStatus = RPA_STATUS.ERROR; if (errorReport && IsStatusChanged(newStatus)) { MessageBuilder mb = new MessageBuilder(0, GetLastLogs(3)); chat.Send(mb.GetMessage(MessageBuilder.ReportLevel.ERROR), !IsFailed); } status = newStatus; } else { if (lastUpdatedTime <= nMinutesAgo) { missingsCount++; RPA_STATUS newStatus = RPA_STATUS.MISSING; int diffMinutes = DiffTimesAsMinutes(lastUpdatedTime, nMinutesAgo); form1.AddLogFromAnotherThread($"【警告】{diffMinutes}分間ログが書き込まれていません"); if (errorReport && IsStatusChanged(newStatus)) { MessageBuilder mb = new MessageBuilder(diffMinutes, GetLastLogs(3)); chat.Send(mb.GetMessage(MessageBuilder.ReportLevel.MISSING), !IsFailed); } status = newStatus; } else { if (IsFailed) { form1.AddLogFromAnotherThread("【復旧】復旧を確認しました"); if (errorReport) { MessageBuilder mb = new MessageBuilder(0, GetLastLogs(3)); chat.Send(mb.GetMessage(MessageBuilder.ReportLevel.RESTORING), false); } } else { form1.AddLogFromAnotherThread("【正常】ログを確認しました"); if (normalReport) { MessageBuilder mb = new MessageBuilder(0, GetLastLogs(3)); chat.Send(mb.GetMessage(MessageBuilder.ReportLevel.SUCCESS)); } } status = RPA_STATUS.SUCCESS; } } }
public void ResetAll() { status = RPA_STATUS.SUCCESS; ResetCount(); }