Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
X
XXL-JOB
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
靳帅
XXL-JOB
Commits
d917c944
提交
d917c944
authored
3月 24, 2017
作者:
xueli.xue
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
rolling日志
上级
ae26cb0c
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
104 行增加
和
107 行删除
+104
-107
JobLogController.java
...n/java/com/xxl/job/admin/controller/JobLogController.java
+6
-10
logdetail.ftl
...min/src/main/webapp/WEB-INF/template/joblog/logdetail.ftl
+11
-23
logdetail.index.1.js
xxl-job-admin/src/main/webapp/static/js/logdetail.index.1.js
+77
-67
LogResult.java
...e/src/main/java/com/xxl/job/core/biz/model/LogResult.java
+7
-0
XxlJobFileAppender.java
...rc/main/java/com/xxl/job/core/log/XxlJobFileAppender.java
+3
-7
没有找到文件。
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java
浏览文件 @
d917c944
...
@@ -101,18 +101,14 @@ public class JobLogController {
...
@@ -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
(
"executorAddress"
,
jobLog
.
getExecutorAddress
());
model
.
addAttribute
(
"triggerTime"
,
jobLog
.
getTriggerTime
().
getTime
());
model
.
addAttribute
(
"logId"
,
jobLog
.
getId
());
}
}
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"
;
return
"joblog/logdetail"
;
}
}
...
...
xxl-job-admin/src/main/webapp/WEB-INF/template/joblog/logdetail.ftl
浏览文件 @
d917c944
...
@@ -14,9 +14,10 @@
...
@@ -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 @@
...
@@ -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>
...
...
xxl-job-admin/src/main/webapp/static/js/logdetail.index.1.js
浏览文件 @
d917c944
$
(
function
()
{
$
(
function
()
{
// valid
// trigger fail, end
if
(
!
running
)
{
if
(
triggerCode
!=
200
)
{
return
;
$
(
'#logConsoleRunning'
).
hide
();
}
$
(
'#logConsole'
).
append
(
'<span style="color: red;">任务发起调度失败,无法查看执行日志</span>'
);
return
;
}
// 加载日志
// pull log
var
fromLineNum
=
0
;
var
fromLineNum
=
0
;
var
pullFailCount
=
0
;
var
pullFailCount
=
0
;
function
pullLog
()
{
function
pullLog
()
{
// pullFailCount, max=20
if
(
pullFailCount
++
>
20
)
{
logRunStop
(
'<span style="color: red;">终止请求Rolling日志,请求失败次数超上限,可刷新页面重新加载日志</span>'
);
return
;
}
// pullFailCount, max=20
// load
if
(
pullFailCount
>=
20
)
{
console
.
log
(
"pullLog, fromLineNum:"
+
fromLineNum
);
console
.
log
(
"pullLog fail-count limit"
);
running
=
false
;
}
// valid
$
.
ajax
({
if
(
!
running
)
{
type
:
'POST'
,
$
(
'.logConsoleRunning'
).
hide
();
async
:
false
,
// sync, make log ordered
logRun
=
window
.
clearInterval
(
logRun
)
url
:
base_url
+
'/joblog/logDetailCat'
,
return
;
data
:
{
}
"executorAddress"
:
executorAddress
,
"triggerTime"
:
triggerTime
,
"logId"
:
logId
,
"fromLineNum"
:
fromLineNum
},
dataType
:
"json"
,
success
:
function
(
data
){
// load
if
(
data
.
code
==
200
)
{
console
.
log
(
"pullLog, fromLineNum:"
+
fromLineNum
);
if
(
!
data
.
content
)
{
$
.
ajax
({
console
.
log
(
'pullLog fail'
);
type
:
'POST'
,
return
;
async
:
false
,
// async, avoid js invoke pagelist before jobId data init
}
url
:
base_url
+
'/joblog/logDetailCat'
,
if
(
fromLineNum
!=
data
.
content
.
fromLineNum
)
{
data
:
{
console
.
log
(
'pullLog fromLineNum not match'
);
"executorAddress"
:
executorAddress
,
return
;
"triggerTime"
:
triggerTime
,
}
"logId"
:
logId
,
if
(
fromLineNum
==
(
data
.
content
.
toLineNum
+
1
)
)
{
"fromLineNum"
:
fromLineNum
console
.
log
(
'pullLog already line-end'
);
},
return
;
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
;
}
// append
// append
fromLineNum
=
data
.
content
.
toLineNum
+
1
;
fromLineNum
=
data
.
content
.
toLineNum
+
1
;
$
(
'#logConsole'
).
append
(
data
.
content
.
logContent
);
$
(
'#logConsole'
).
append
(
data
.
content
.
logContent
);
pullFailCount
=
0
;
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
);
});
});
xxl-job-core/src/main/java/com/xxl/job/core/biz/model/LogResult.java
浏览文件 @
d917c944
...
@@ -8,6 +8,13 @@ import java.io.Serializable;
...
@@ -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
;
...
...
xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobFileAppender.java
浏览文件 @
d917c944
...
@@ -122,12 +122,12 @@ public class XxlJobFileAppender extends AppenderSkeleton {
...
@@ -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 {
...
@@ -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
;
/*
/*
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论