/// <summary> /// 上报信息到U上商侣,可选是否发送短信给管理员 /// </summary> /// <param name="msg"></param> /// <param name="sendSms"></param> public static void UploadNotice(string msg, bool sendSms) { try { string sendMsg = string.Format("msg={0}&sendSms={1}&key={2}", msg, sendSms.ToString().ToLower(), "ab123456ab"); string result = SysHelp.HttpPost("https://api.iusung.com/api/app/ExceptionLog/CreateSysNoticeLog", sendMsg); SysLog.CreateTextLog(LogType.error, string.Format("上报信息至U上商侣,反馈结果为:[{0}]", result)); } catch (Exception e) { SysLog.CreateTextLog(LogType.error, string.Format("上报信息至U上商侣,反馈结果为:[{0}]", e.Message)); } }
/// <summary> /// 执行 /// </summary> public void Run() { try { WebClient webClient = new WebClient(); string fileUrl = this.Host + fileName; string savePath = "D:\\OfficeLog\\temp"; DirectoryInfo sd = new DirectoryInfo(savePath); if (!sd.Exists) { sd.Create(); } string filePath = savePath + "\\test_" + this.SaveFileName + ".txt"; FileInfo file = new FileInfo(filePath); if (file.Exists) { file.Delete(); } webClient.DownloadFile(fileUrl, filePath); SysLog.CreateTextLog(LogType.runing, string.Format("Download file from [{0}] is success", fileUrl)); if (IsSendMsg) { //曾经发送过错误报告,发送已修复报告 //UshangService.UploadNotice(string.Format("U上商侣图片已经可正常通过 {0} 进行访问", this.Host), true); } ErrorCount = 0; IsSendMsg = false; } catch (Exception e) { ErrorCount = ErrorCount + 1; //记录到错误日志 SysLog.CreateTextLog(LogType.error, string.Format("Download file from [{0}] is fail,Error message is [{1}],ErrorCount is {2}", this.Host, e.Message, ErrorCount)); if (!IsSendMsg) { //没有发送错误报告-检查错误计数器 if (ErrorCount > ErrorCountMax) { IsSendMsg = true; //UshangService.UploadNotice(string.Format("发现U上商侣图片无法从 {0} 进行访问,错误提示:{1}", this.Host, e.Message // ), true); } } } }
/// <summary> /// 执行 /// </summary> public void Run() { try { //变更为PING 11次 间隔1秒 int eC = 0; int sC = 0; bool isSuccess = false; List <string> eCString = new List <string>(); for (int i = 0; i < 11; i++) { Ping p = new Ping(); var rR = p.Send(HOST); if (rR.Status == IPStatus.Success) { sC = sC + 1; } else { eC = eC + 1; eCString.Add(rR.Status.ToString()); } Thread.Sleep(1000); } if (eC > sC) { //错误比正确多 } else { //正确比错误多 isSuccess = true; } string msg = string.Format("ping {0} result [Success time:{1},Error time:{2},error String List is: {3}]", HOST, sC, eC, eCString.Count > 0 ? string.Join(",", eCString) : "none"); if (isSuccess) { //成功,写入日志。 SysLog.CreateTextLog(LogType.runing, msg); if (IsSendMsg == true) { //曾经发送过错误报告现在恢复了,则发送恢复通知 SysLog.CreateTextLog(LogType.error, "错误已恢复"); UshangService.UploadNotice("成都公司电话交换机故障已恢复", true); } IsSendMsg = false; SendMsgTime = null; FirstSendMsgTime = null; ErrorCount = 0; } else { ErrorCount = ErrorCount + 1; //其他情况,写入错误日志以及发起通知等操作 SysLog.CreateTextLog(LogType.error, msg + string.Format(",error count is {0}", ErrorCount)); string postString = "发现成都公司电话交换机链接失败"; if (!IsSendMsg) { //没有发送错误报告,并且超过了错误累计的上限,立即发送错误报告 if (ErrorCount > ErrorCountMax) { SysLog.CreateTextLog(LogType.error, string.Format("错误已经连续{0}次发生,执行发送错误报告至U上商侣后台以及短信通知管理员", ErrorCount)); IsSendMsg = true; SendMsgTime = DateTime.Now; FirstSendMsgTime = DateTime.Now; UshangService.UploadNotice(postString, true); } } else { if (SendMsgTime.Value.AddMinutes(SendMsgTimeInterval) <= DateTime.Now) { //如果当前日期已经超过了发送错误报告加上间隙分钟,则重复发送错误报告,并更新错误报告发送时间 postString = postString + string.Format(",错误还未解决,距离上次发送错误报告已过去了{0}分钟,距离该错误发生已经过去了{1}分钟", SendMsgTimeInterval, (DateTime.Now - FirstSendMsgTime.Value).TotalMinutes.ToString("0")); SysLog.CreateTextLog(LogType.error, postString); SendMsgTime = DateTime.Now; UshangService.UploadNotice(postString, true); } else { //如果在间隙时间内,则不发送任何错误报告 SysLog.CreateTextLog(LogType.warning, string.Format("{0},错误还在继续,但应间隔时间未到,不上报错误", msg)); } } } } catch (Exception e) { SysLog.CreateTextLog(LogType.error, e.Message); SysLog.CreateTextLog(LogType.error, e.StackTrace); } }