public JsonResult GetLogInfo() { var appenders = LogManager.GetRepository().GetAppenders(); var logInfoColletion = new List <LogInfoViewModel>(); foreach (var item in appenders) { var logInfo = new LogInfoViewModel { LogAppenderType = item.GetType().Name }; if (item.GetType() == typeof(RollingFileAppender)) { logInfo.LogFile = true; logInfo.FilePath = ((RollingFileAppender)item).File; } else { logInfo.LogFile = false; } logInfoColletion.Add(logInfo); } return(Json(logInfoColletion, JsonRequestBehavior.AllowGet)); }
private Task <DiffDataTable> Initialize(LogInfoViewModel viewModel, ITable table) { return(table.Dispatcher.InvokeAsync(() => { var logs = table.GetLog(this.authenticator); var prevLogs = logs.SkipWhile(item => item.Revision >= viewModel.Revision); var header1 = prevLogs.Any() ? $"[{prevLogs.First().DateTime}] {prevLogs.First().Revision}" : string.Empty; var header2 = $"[{viewModel.DateTime}] {viewModel.Revision}"; var dataSet1 = prevLogs.Any() ? table.GetDataSet(this.authenticator, prevLogs.First().Revision) : new CremaDataSet(); var dataSet2 = table.GetDataSet(this.authenticator, viewModel.Revision); var dataSet = new DiffDataSet(dataSet1, dataSet2) { Header1 = header1, Header2 = header2, }; return dataSet.Tables.First(); })); }
private Task <DiffDataType> Initialize(LogInfoViewModel viewModel, IType type) { return(type.Dispatcher.InvokeAsync(() => { var logs = type.GetLog(this.authenticator); var revision = logs.First().Revision; var dataSet1 = type.GetDataSet(this.authenticator, viewModel.Revision); var dataSet2 = type.GetDataSet(this.authenticator, revision); var header1 = $"{type.Name} - {viewModel.Revision}"; var header2 = $"{type.Name} - {revision}"; var dataSet = new DiffDataSet(dataSet1, dataSet2) { Header1 = header1, Header2 = header2, }; return dataSet.Types.First(); })); }
private Task <DiffDataTable> Initialize(LogInfoViewModel viewModel, ITable table) { return(table.Dispatcher.InvokeAsync(() => { var logs = table.GetLog(this.authenticator); var log = logs.First(); var dataSet1 = table.GetDataSet(this.authenticator, viewModel.Revision); var dataSet2 = table.GetDataSet(this.authenticator, log.Revision); var header1 = $"[{viewModel.DateTime}] {viewModel.Revision}"; var header2 = $"[{log.DateTime}] {log.Revision}"; var dataSet = new DiffDataSet(dataSet1, dataSet2) { Header1 = header1, Header2 = header2, }; return dataSet.Tables.First(); })); }
public IActionResult getLogs(string api) { var logs = _checkSystemService.GetLogs(api); List <LogInfoViewModel> model = new List <LogInfoViewModel>(); if (logs != null) { foreach (var log in logs) { LogInfoViewModel modelLog = new LogInfoViewModel(); modelLog.Api = api; modelLog.LastModified = log.Value; modelLog.NameLog = log.Key; model.Add(modelLog); } return(View(model)); } return(NotFound()); }
private async Task <DiffDataType> Initialize(LogInfoViewModel viewModel, IType type) { var logs = await type.GetLogAsync(this.authenticator, null); var prevLog = this.GetPrevLog(logs, viewModel.Revision); var header1 = prevLog != null ? $"[{prevLog.Value.DateTime}] {prevLog.Value.Revision}" : string.Empty; var header2 = $"[{viewModel.DateTime}] {viewModel.Revision}"; var dataSet1 = prevLog != null ? await type.GetDataSetAsync(this.authenticator, prevLog.Value.Revision) : new CremaDataSet(); var dataSet2 = await type.GetDataSetAsync(this.authenticator, viewModel.Revision); var dataSet = new DiffDataSet(dataSet1, dataSet2) { Header1 = header1, Header2 = header2, }; return(dataSet.Types.First()); }
private async Task <DiffDataTable> Initialize(LogInfoViewModel viewModel, ITable table) { var logs = await table.GetLogAsync(this.authenticator, null); var log = logs.First(); var dataSet1 = await table.GetDataSetAsync(this.authenticator, viewModel.Revision); var dataSet2 = await table.GetDataSetAsync(this.authenticator, log.Revision); var header1 = $"[{viewModel.DateTime}] {viewModel.Revision}"; var header2 = $"[{log.DateTime}] {log.Revision}"; var dataSet = new DiffDataSet(dataSet1, dataSet2) { Header1 = header1, Header2 = header2, }; return(dataSet.Tables.First()); }
private async Task <DiffDataType> Initialize(LogInfoViewModel viewModel, IType type) { var logs = await type.GetLogAsync(this.authenticator, null); var revision = logs.First().Revision; var dataSet1 = await type.GetDataSetAsync(this.authenticator, viewModel.Revision); var dataSet2 = await type.GetDataSetAsync(this.authenticator, revision); var header1 = $"{type.Name} - {viewModel.Revision}"; var header2 = $"{type.Name} - {revision}"; var dataSet = new DiffDataSet(dataSet1, dataSet2) { Header1 = header1, Header2 = header2, }; return(dataSet.Types.First()); }
public async Task Execute(IJobExecutionContext context) { var maxLogCount = 20; //最多保存日志数量 var warnTime = 20; //接口请求超过多少秒记录警告日志 //获取相关参数 var requestUrl = context.JobDetail.JobDataMap.GetString(ConstantUtil.REQUESTURL); requestUrl = requestUrl?.IndexOf("http") == 0 ? requestUrl : "http://" + requestUrl; var requestParameters = context.JobDetail.JobDataMap.GetString(ConstantUtil.REQUESTPARAMETERS); var headersString = context.JobDetail.JobDataMap.GetString(ConstantUtil.HEADERS); var mailMessage = (MailMessageEnum)int.Parse(context.JobDetail.JobDataMap.GetString(ConstantUtil.MAILMESSAGE) ?? "0"); var headers = headersString != null?JsonUtil.JsonDeserializeObject <Dictionary <string, string> >(headersString?.Trim()) : null; var requestType = (RequestTypeEnum)int.Parse(context.JobDetail.JobDataMap.GetString(ConstantUtil.REQUESTTYPE)); Stopwatch stopwatch = new Stopwatch(); stopwatch.Restart(); // 开始监视代码运行时间 HttpResponseMessage response = new HttpResponseMessage(); var loginfo = new LogInfoViewModel(); loginfo.Url = requestUrl; loginfo.BeginTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); loginfo.RequestType = requestType.ToString(); loginfo.Parameters = requestParameters; loginfo.JobName = $"{context.JobDetail.Key.Group}.{context.JobDetail.Key.Name}"; var logs = context.JobDetail.JobDataMap[ConstantUtil.LOGLIST] as List <string> ?? new List <string>(); if (logs.Count >= maxLogCount) { logs.RemoveRange(0, logs.Count - maxLogCount); } //业务 try { var http = HttpHelper.Instance; switch (requestType) { case RequestTypeEnum.Get: response = await http.GetAsync(requestUrl, headers); break; case RequestTypeEnum.Post: response = await http.PostAsync(requestUrl, requestParameters, headers); break; case RequestTypeEnum.Put: response = await http.PutAsync(requestUrl, requestParameters, headers); break; case RequestTypeEnum.Delete: response = await http.DeleteAsync(requestUrl, headers); break; } var result = HttpUtility.HtmlEncode(await response.Content.ReadAsStringAsync()); stopwatch.Stop(); // 停止监视 double seconds = stopwatch.Elapsed.TotalSeconds; //总秒数 loginfo.EndTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); loginfo.Seconds = seconds; loginfo.Result = $"<span class='result'>{result.MaxLeft(1000)}</span>"; if (!response.IsSuccessStatusCode) { loginfo.ErrorMsg = $"<span class='error'>{result.MaxLeft(3000)}</span>"; await ErrorAsync(loginfo.JobName, new Exception(result.MaxLeft(3000)), JsonUtil.JsonSerialize(loginfo), mailMessage); context.JobDetail.JobDataMap[ConstantUtil.EXCEPTION] = JsonUtil.JsonSerialize(loginfo); } else { try { //这里需要和请求方约定好返回结果约定为HttpResultViewModel模型 var httpResult = JsonUtil.JsonDeserializeObject <HttpResultViewModel>(HttpUtility.HtmlDecode(result)); if (!httpResult.IsSuccess) { loginfo.ErrorMsg = $"<span class='error'>{httpResult.ErrorMsg}</span>"; await ErrorAsync(loginfo.JobName, new Exception(httpResult.ErrorMsg), JsonUtil.JsonSerialize(loginfo), mailMessage); context.JobDetail.JobDataMap[ConstantUtil.EXCEPTION] = JsonUtil.JsonSerialize(loginfo); } else { await InformationAsync(loginfo.JobName, JsonUtil.JsonSerialize(loginfo), mailMessage); } } catch (Exception) { await InformationAsync(loginfo.JobName, JsonUtil.JsonSerialize(loginfo), mailMessage); } } } catch (Exception ex) { JobExecutionException e2 = new JobExecutionException(ex); e2.RefireImmediately = true; stopwatch.Stop(); // 停止监视 double seconds = stopwatch.Elapsed.TotalSeconds; //总秒数 loginfo.ErrorMsg = $"<span class='error'>{ex.Message} {ex.StackTrace}</span>"; context.JobDetail.JobDataMap[ConstantUtil.EXCEPTION] = JsonUtil.JsonSerialize(loginfo); loginfo.Seconds = seconds; await ErrorAsync(loginfo.JobName, ex, JsonUtil.JsonSerialize(loginfo), mailMessage); } finally { //LogUtil.Debug("ManagerJob Execute end "); logs.Add($"<p>{JsonUtil.JsonSerialize(loginfo)}</p>"); context.JobDetail.JobDataMap[ConstantUtil.LOGLIST] = logs; double seconds = stopwatch.Elapsed.TotalSeconds; //总秒数 if (seconds >= warnTime) //如果请求超过20秒,记录警告日志 { await WarningAsync(loginfo.JobName, "耗时过长 - " + JsonUtil.JsonSerialize(loginfo), mailMessage); } } }