rolling日志

This commit is contained in:
xueli.xue 2017-03-24 19:38:06 +08:00
parent ae26cb0c5d
commit d917c9443b
5 changed files with 104 additions and 107 deletions

View File

@ -101,18 +101,14 @@ public class JobLogController {
ReturnT<String> logStatue = ReturnT.SUCCESS; ReturnT<String> logStatue = ReturnT.SUCCESS;
XxlJobLog jobLog = xxlJobLogDao.load(id); XxlJobLog jobLog = xxlJobLogDao.load(id);
if (jobLog == null) { if (jobLog == null) {
logStatue = new ReturnT<String>(ReturnT.FAIL_CODE, "查看执行日志失败: 日志ID非法"); throw new RuntimeException("抱歉日志ID非法.");
} else {
if (ReturnT.SUCCESS_CODE != jobLog.getTriggerCode()) {
logStatue = new ReturnT<String>(ReturnT.FAIL_CODE, "查看执行日志失败: 任务发起调度失败,无法查看执行日志");
} }
model.addAttribute("triggerCode", jobLog.getTriggerCode());
model.addAttribute("handleCode", jobLog.getHandleCode());
model.addAttribute("executorAddress", jobLog.getExecutorAddress()); model.addAttribute("executorAddress", jobLog.getExecutorAddress());
model.addAttribute("triggerTime", jobLog.getTriggerTime().getTime()); model.addAttribute("triggerTime", jobLog.getTriggerTime().getTime());
model.addAttribute("logId", jobLog.getId()); model.addAttribute("logId", jobLog.getId());
}
model.addAttribute("logStatue", logStatue);
return "joblog/logdetail"; return "joblog/logdetail";
} }

View File

@ -14,9 +14,10 @@
position: absolute; position: absolute;
/*color:white;background-color:black*/ /*color:white;background-color:black*/
} }
.logConsoleRunning { #logConsoleRunning {
font-size: 20px; font-size: 20px;
margin-top: 7px; margin-top: 7px;
float: left;
} }
</style> </style>
</head> </head>
@ -59,35 +60,22 @@
</header> </header>
<div class="content-wrapper" > <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>
</div> </div>
<@netCommon.commonScript /> <@netCommon.commonScript />
<script> <script>
// 参数 // 参数
var running = true; // 允许运行 var triggerCode = '${triggerCode}';
var executorAddress; var handleCode = '${handleCode}';
var triggerTime; var executorAddress = '${executorAddress}';
var logId; var triggerTime = '${triggerTime}';
var logId = '${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>
</script> </script>
<script src="${request.contextPath}/static/js/logdetail.index.1.js"></script> <script src="${request.contextPath}/static/js/logdetail.index.1.js"></script>

View File

@ -1,33 +1,28 @@
$(function() { $(function() {
// valid // trigger fail, end
if (!running) { if (triggerCode != 200) {
$('#logConsoleRunning').hide();
$('#logConsole').append('<span style="color: red;">任务发起调度失败无法查看执行日志</span>');
return; return;
} }
// 加载日志 // pull log
var fromLineNum = 0; var fromLineNum = 0;
var pullFailCount = 0; var pullFailCount = 0;
function pullLog() { function pullLog() {
// pullFailCount, max=20 // pullFailCount, max=20
if (pullFailCount >= 20) { if (pullFailCount++ > 20) {
console.log("pullLog fail-count limit"); logRunStop('<span style="color: red;">终止请求Rolling日志,请求失败次数超上限,可刷新页面重新加载日志</span>');
running = false;
}
// valid
if (!running) {
$('.logConsoleRunning').hide();
logRun = window.clearInterval(logRun)
return; return;
} }
// load // load
console.log("pullLog, fromLineNum:" + fromLineNum); console.log("pullLog, fromLineNum:" + fromLineNum);
$.ajax({ $.ajax({
type : 'POST', type : 'POST',
async: false, // async, avoid js invoke pagelist before jobId data init async: false, // sync, make log ordered
url : base_url + '/joblog/logDetailCat', url : base_url + '/joblog/logDetailCat',
data : { data : {
"executorAddress":executorAddress, "executorAddress":executorAddress,
@ -37,7 +32,7 @@ $(function() {
}, },
dataType : "json", dataType : "json",
success : function(data){ success : function(data){
pullFailCount++;
if (data.code == 200) { if (data.code == 200) {
if (!data.content) { if (!data.content) {
console.log('pullLog fail'); console.log('pullLog fail');
@ -59,20 +54,35 @@ $(function() {
// valid end // valid end
if (data.content.end) { if (data.content.end) {
running = false; logRunStop('<span style="color: green;">[Rolling Log Finish]</span>');
console.log("pullLog already file-end"); return;
} }
} else { } else {
ComAlertTec.show(data.msg); console.log('pullLog fail:'+data.msg);
} }
} }
}); });
} }
// 周期运行 // pull first page
pullLog(); pullLog();
// handler already callback, end
if (handleCode > 0) {
logRunStop('<span style="color: green;">[Log Finish]</span>');
return;
}
// round until end
var logRun = setInterval(function () { var logRun = setInterval(function () {
pullLog() pullLog()
}, 3000); }, 3000);
function logRunStop(content){
$('#logConsoleRunning').hide();
logRun = window.clearInterval(logRun);
$('#logConsole').append(content);
}
}); });

View File

@ -8,6 +8,13 @@ import java.io.Serializable;
public class LogResult implements Serializable { public class LogResult implements Serializable {
private static final long serialVersionUID = 42L; 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 fromLineNum;
private int toLineNum; private int toLineNum;
private String logContent; private String logContent;

View File

@ -122,12 +122,12 @@ public class XxlJobFileAppender extends AppenderSkeleton {
// valid log file // valid log file
if (logFileName==null || logFileName.trim().length()==0) { 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); File logFile = new File(filePath, logFileName);
if (!logFile.exists()) { if (!logFile.exists()) {
return null; return new LogResult(fromLineNum, -1, "readLog fail, logFile not exists", true);
} }
// read file // read file
@ -157,11 +157,7 @@ public class XxlJobFileAppender extends AppenderSkeleton {
} }
// result // result
LogResult logResult = new LogResult(); LogResult logResult = new LogResult(fromLineNum, toLineNum, logContentBuffer.toString(), false);
logResult.setFromLineNum(fromLineNum);
logResult.setToLineNum(toLineNum);
logResult.setLogContent(logContentBuffer.toString());
logResult.setEnd(false);
return logResult; return logResult;
/* /*