Esempio n. 1
0
        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();
            }));
        }
Esempio n. 3
0
        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();
            }));
        }
Esempio n. 4
0
        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());
        }
Esempio n. 9
0
        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);
                }
            }
        }