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;
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, "查看执行日志失败: 任务发起调度失败,无法查看执行日志");
throw new RuntimeException("抱歉日志ID非法.");
}
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());
}
model.addAttribute("logStatue", logStatue);
return "joblog/logdetail";
}

View File

@ -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>

View File

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

View File

@ -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;

View File

@ -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;
/*