From d917c9443b7594be8436b5ecfafcbf3a71d676e8 Mon Sep 17 00:00:00 2001 From: "xueli.xue" Date: Fri, 24 Mar 2017 19:38:06 +0800 Subject: [PATCH] =?UTF-8?q?rolling=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/controller/JobLogController.java | 16 +- .../WEB-INF/template/joblog/logdetail.ftl | 34 ++--- .../webapp/static/js/logdetail.index.1.js | 144 ++++++++++-------- .../com/xxl/job/core/biz/model/LogResult.java | 7 + .../xxl/job/core/log/XxlJobFileAppender.java | 10 +- 5 files changed, 104 insertions(+), 107 deletions(-) diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java index d83c96d5..0d6d2dd8 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java @@ -101,18 +101,14 @@ public class JobLogController { ReturnT logStatue = ReturnT.SUCCESS; XxlJobLog jobLog = xxlJobLogDao.load(id); if (jobLog == null) { - logStatue = new ReturnT(ReturnT.FAIL_CODE, "查看执行日志失败: 日志ID非法"); - } else { - if (ReturnT.SUCCESS_CODE != jobLog.getTriggerCode()) { - logStatue = new ReturnT(ReturnT.FAIL_CODE, "查看执行日志失败: 任务发起调度失败,无法查看执行日志"); - } - - model.addAttribute("executorAddress", jobLog.getExecutorAddress()); - model.addAttribute("triggerTime", jobLog.getTriggerTime().getTime()); - model.addAttribute("logId", jobLog.getId()); + throw new RuntimeException("抱歉,日志ID非法."); } - model.addAttribute("logStatue", logStatue); + model.addAttribute("triggerCode", jobLog.getTriggerCode()); + model.addAttribute("handleCode", jobLog.getHandleCode()); + model.addAttribute("executorAddress", jobLog.getExecutorAddress()); + model.addAttribute("triggerTime", jobLog.getTriggerTime().getTime()); + model.addAttribute("logId", jobLog.getId()); return "joblog/logdetail"; } diff --git a/xxl-job-admin/src/main/webapp/WEB-INF/template/joblog/logdetail.ftl b/xxl-job-admin/src/main/webapp/WEB-INF/template/joblog/logdetail.ftl index 41c9d57d..7bac68f4 100644 --- a/xxl-job-admin/src/main/webapp/WEB-INF/template/joblog/logdetail.ftl +++ b/xxl-job-admin/src/main/webapp/WEB-INF/template/joblog/logdetail.ftl @@ -14,9 +14,10 @@ position: absolute; /*color:white;background-color:black*/ } - .logConsoleRunning { + #logConsoleRunning { font-size: 20px; margin-top: 7px; + float: left; } @@ -59,35 +60,22 @@
-
  • +
    +
  • +
    +
    <@netCommon.commonScript /> diff --git a/xxl-job-admin/src/main/webapp/static/js/logdetail.index.1.js b/xxl-job-admin/src/main/webapp/static/js/logdetail.index.1.js index 7dbb7d34..ba8b28c0 100644 --- a/xxl-job-admin/src/main/webapp/static/js/logdetail.index.1.js +++ b/xxl-job-admin/src/main/webapp/static/js/logdetail.index.1.js @@ -1,78 +1,88 @@ $(function() { - // valid - if (!running) { - return; - } + // trigger fail, end + if (triggerCode != 200) { + $('#logConsoleRunning').hide(); + $('#logConsole').append('任务发起调度失败,无法查看执行日志'); + return; + } - // 加载日志 - var fromLineNum = 0; - var pullFailCount = 0; - function pullLog() { + // pull log + var fromLineNum = 0; + var pullFailCount = 0; + function pullLog() { + // pullFailCount, max=20 + if (pullFailCount++ > 20) { + logRunStop('终止请求Rolling日志,请求失败次数超上限,可刷新页面重新加载日志'); + return; + } - // pullFailCount, max=20 - if (pullFailCount >= 20) { - console.log("pullLog fail-count limit"); - running = false; - } + // load + console.log("pullLog, fromLineNum:" + fromLineNum); - // valid - if (!running) { - $('.logConsoleRunning').hide(); - logRun = window.clearInterval(logRun) - return; - } + $.ajax({ + type : 'POST', + async: false, // sync, make log ordered + url : base_url + '/joblog/logDetailCat', + data : { + "executorAddress":executorAddress, + "triggerTime":triggerTime, + "logId":logId, + "fromLineNum":fromLineNum + }, + dataType : "json", + success : function(data){ - // load - console.log("pullLog, fromLineNum:" + fromLineNum); - $.ajax({ - type : 'POST', - async: false, // async, avoid js invoke pagelist before jobId data init - url : base_url + '/joblog/logDetailCat', - data : { - "executorAddress":executorAddress, - "triggerTime":triggerTime, - "logId":logId, - "fromLineNum":fromLineNum - }, - dataType : "json", - success : function(data){ - pullFailCount++; - if (data.code == 200) { - if (!data.content) { - console.log('pullLog fail'); - return; - } - if (fromLineNum != data.content.fromLineNum) { - console.log('pullLog fromLineNum not match'); - return; - } - if (fromLineNum == (data.content.toLineNum + 1) ) { - console.log('pullLog already line-end'); - return; - } + if (data.code == 200) { + if (!data.content) { + console.log('pullLog fail'); + return; + } + if (fromLineNum != data.content.fromLineNum) { + console.log('pullLog fromLineNum not match'); + return; + } + if (fromLineNum == (data.content.toLineNum + 1) ) { + console.log('pullLog already line-end'); + return; + } - // append - fromLineNum = data.content.toLineNum + 1; - $('#logConsole').append(data.content.logContent); - pullFailCount = 0; + // append + fromLineNum = data.content.toLineNum + 1; + $('#logConsole').append(data.content.logContent); + pullFailCount = 0; + + // valid end + if (data.content.end) { + logRunStop('[Rolling Log Finish]'); + return; + } + } else { + console.log('pullLog fail:'+data.msg); + } + } + }); + } + + // pull first page + pullLog(); + + // handler already callback, end + if (handleCode > 0) { + logRunStop('[Log Finish]'); + return; + } + + // round until end + var logRun = setInterval(function () { + pullLog() + }, 3000); + function logRunStop(content){ + $('#logConsoleRunning').hide(); + logRun = window.clearInterval(logRun); + $('#logConsole').append(content); + } - // valid end - if (data.content.end) { - running = false; - console.log("pullLog already file-end"); - } - } else { - ComAlertTec.show(data.msg); - } - } - }); - } - // 周期运行 - pullLog(); - var logRun = setInterval(function () { - pullLog() - }, 3000); }); diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/biz/model/LogResult.java b/xxl-job-core/src/main/java/com/xxl/job/core/biz/model/LogResult.java index edf0c686..1bd4c729 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/biz/model/LogResult.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/biz/model/LogResult.java @@ -8,6 +8,13 @@ import java.io.Serializable; public class LogResult implements Serializable { private static final long serialVersionUID = 42L; + public LogResult(int fromLineNum, int toLineNum, String logContent, boolean isEnd) { + this.fromLineNum = fromLineNum; + this.toLineNum = toLineNum; + this.logContent = logContent; + this.isEnd = isEnd; + } + private int fromLineNum; private int toLineNum; private String logContent; diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobFileAppender.java b/xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobFileAppender.java index 6ff532c8..63c5cf3e 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobFileAppender.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobFileAppender.java @@ -122,12 +122,12 @@ public class XxlJobFileAppender extends AppenderSkeleton { // valid log file if (logFileName==null || logFileName.trim().length()==0) { - return null; + return new LogResult(fromLineNum, -1, "readLog fail, logFile not found", true); } File logFile = new File(filePath, logFileName); if (!logFile.exists()) { - return null; + return new LogResult(fromLineNum, -1, "readLog fail, logFile not exists", true); } // read file @@ -157,11 +157,7 @@ public class XxlJobFileAppender extends AppenderSkeleton { } // result - LogResult logResult = new LogResult(); - logResult.setFromLineNum(fromLineNum); - logResult.setToLineNum(toLineNum); - logResult.setLogContent(logContentBuffer.toString()); - logResult.setEnd(false); + LogResult logResult = new LogResult(fromLineNum, toLineNum, logContentBuffer.toString(), false); return logResult; /*