xueli.xue 8 lat temu
rodzic
commit
d917c9443b

+ 6 - 10
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java

@@ -101,18 +101,14 @@ public class JobLogController {
 		ReturnT<String> logStatue = ReturnT.SUCCESS;
 		XxlJobLog jobLog = xxlJobLogDao.load(id);
 		if (jobLog == null) {
-			logStatue = new ReturnT<String>(ReturnT.FAIL_CODE, "查看执行日志失败: 日志ID非法");
-		} else {
-			if (ReturnT.SUCCESS_CODE != jobLog.getTriggerCode()) {
-				logStatue = new ReturnT<String>(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";
 	}
 

+ 11 - 23
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;
         }
     </style>
 </head>
@@ -59,35 +60,22 @@
     </header>
 
     <div class="content-wrapper" >
-        <pre class="logConsolePre"><div id="logConsole"></div><li class="fa fa-refresh fa-spin logConsoleRunning" ></li></pre>
+        <pre class="logConsolePre"><div id="logConsole"></div>
+            <li class="fa fa-refresh fa-spin" id="logConsoleRunning" ></li>
+            <div style="margin-top: 50px;" ></div>
+        </pre>
     </div>
 
 </div>
 
 <@netCommon.commonScript />
 <script>
-
     // 参数
-    var running = true;     // 允许运行
-    var executorAddress;
-    var triggerTime;
-    var logId;
-
-    // init
-    <#if logStatue.code == 200>
-        running = true;
-        $('.logConsoleRunning').show();
-
-        executorAddress = '${executorAddress}';
-        triggerTime = '${triggerTime}';
-        logId = '${logId}';
-    <#else>
-        running = false;
-        $('.logConsoleRunning').hide();
-
-        $('.logConsole').append('${logStatue.msg}');
-    </#if>
-
+    var triggerCode = '${triggerCode}';
+    var handleCode = '${handleCode}';
+    var executorAddress = '${executorAddress}';
+    var triggerTime = '${triggerTime}';
+    var logId = '${logId}';
 </script>
 <script src="${request.contextPath}/static/js/logdetail.index.1.js"></script>
 

+ 77 - 67
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('<span style="color: red;">任务发起调度失败,无法查看执行日志</span>');
+        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('<span style="color: red;">终止请求Rolling日志,请求失败次数超上限,可刷新页面重新加载日志</span>');
+            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('<span style="color: green;">[Rolling Log Finish]</span>');
+                        return;
+                    }
+                } else {
+                    console.log('pullLog fail:'+data.msg);
+                }
+            }
+        });
+    }
+
+    // pull first page
+    pullLog();
+
+    // handler already callback, end
+    if (handleCode > 0) {
+        logRunStop('<span style="color: green;">[Log Finish]</span>');
+        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);
 
 });

+ 7 - 0
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;

+ 3 - 7
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;
 
 		/*