Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
X
XXL-JOB
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
靳帅
XXL-JOB
Commits
bf866984
提交
bf866984
authored
12月 20, 2017
作者:
xuxueli
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
文件操作优化
上级
3c95ba5a
隐藏空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
75 行增加
和
73 行删除
+75
-73
ExecutorBizImpl.java
.../main/java/com/xxl/job/core/biz/impl/ExecutorBizImpl.java
+1
-1
GlueTypeEnum.java
...ore/src/main/java/com/xxl/job/core/glue/GlueTypeEnum.java
+27
-6
ScriptJobHandler.java
.../java/com/xxl/job/core/handler/impl/ScriptJobHandler.java
+12
-13
XxlJobFileAppender.java
...rc/main/java/com/xxl/job/core/log/XxlJobFileAppender.java
+29
-35
JobThread.java
...core/src/main/java/com/xxl/job/core/thread/JobThread.java
+1
-1
ScriptUtil.java
...-core/src/main/java/com/xxl/job/core/util/ScriptUtil.java
+0
-14
xxl-job-executor.properties
...ple-jfinal/src/main/resources/xxl-job-executor.properties
+2
-1
xxl-job-executor.properties
...ple-spring/src/main/resources/xxl-job-executor.properties
+2
-1
application.properties
...mple-springboot/src/main/resources/application.properties
+1
-1
没有找到文件。
xxl-job-core/src/main/java/com/xxl/job/core/biz/impl/ExecutorBizImpl.java
浏览文件 @
bf866984
...
...
@@ -59,7 +59,7 @@ public class ExecutorBizImpl implements ExecutorBiz {
@Override
public
ReturnT
<
LogResult
>
log
(
long
logDateTim
,
int
logId
,
int
fromLineNum
)
{
// log filename: yyyy-MM-dd/9999.log
// log filename:
logPath/
yyyy-MM-dd/9999.log
String
logFileName
=
XxlJobFileAppender
.
makeLogFileName
(
new
Date
(
logDateTim
),
logId
);
LogResult
logResult
=
XxlJobFileAppender
.
readLog
(
logFileName
,
fromLineNum
);
...
...
xxl-job-core/src/main/java/com/xxl/job/core/glue/GlueTypeEnum.java
浏览文件 @
bf866984
...
...
@@ -5,20 +5,40 @@ package com.xxl.job.core.glue;
*/
public
enum
GlueTypeEnum
{
BEAN
(
"BEAN模式"
),
GLUE_GROOVY
(
"GLUE模式(Java)"
),
GLUE_SHELL
(
"GLUE模式(Shell)"
),
GLUE_PYTHON
(
"GLUE模式(Python)"
),
GLUE_NODEJS
(
"GLUE模式(Nodejs)"
);
BEAN
(
"BEAN模式"
,
false
,
null
,
null
),
GLUE_GROOVY
(
"GLUE模式(Java)"
,
false
,
null
,
null
),
GLUE_SHELL
(
"GLUE模式(Shell)"
,
true
,
"bash"
,
".sh"
),
GLUE_PYTHON
(
"GLUE模式(Python)"
,
true
,
"python"
,
".py"
),
GLUE_NODEJS
(
"GLUE模式(Nodejs)"
,
true
,
"node"
,
".js"
);
private
String
desc
;
private
GlueTypeEnum
(
String
desc
)
{
private
boolean
isScript
;
private
String
cmd
;
private
String
suffix
;
private
GlueTypeEnum
(
String
desc
,
boolean
isScript
,
String
cmd
,
String
suffix
)
{
this
.
desc
=
desc
;
this
.
isScript
=
isScript
;
this
.
cmd
=
cmd
;
this
.
suffix
=
suffix
;
}
public
String
getDesc
()
{
return
desc
;
}
public
boolean
isScript
()
{
return
isScript
;
}
public
String
getCmd
()
{
return
cmd
;
}
public
String
getSuffix
()
{
return
suffix
;
}
public
static
GlueTypeEnum
match
(
String
name
){
for
(
GlueTypeEnum
item:
GlueTypeEnum
.
values
())
{
if
(
item
.
name
().
equals
(
name
))
{
...
...
@@ -27,4 +47,5 @@ public enum GlueTypeEnum {
}
return
null
;
}
}
xxl-job-core/src/main/java/com/xxl/job/core/handler/impl/ScriptJobHandler.java
浏览文件 @
bf866984
...
...
@@ -31,25 +31,24 @@ public class ScriptJobHandler extends IJobHandler {
@Override
public
ReturnT
<
String
>
execute
(
String
...
params
)
throws
Exception
{
// cmd + script-file-name
String
cmd
=
"bash"
;
String
scriptFileName
=
null
;
if
(
GlueTypeEnum
.
GLUE_SHELL
==
glueType
)
{
cmd
=
"bash"
;
scriptFileName
=
XxlJobFileAppender
.
getLogPath
().
concat
(
"gluesource/"
).
concat
(
String
.
valueOf
(
jobId
)).
concat
(
"_"
).
concat
(
String
.
valueOf
(
glueUpdatetime
)).
concat
(
".sh"
);
}
else
if
(
GlueTypeEnum
.
GLUE_PYTHON
==
glueType
)
{
cmd
=
"python"
;
scriptFileName
=
XxlJobFileAppender
.
getLogPath
().
concat
(
"gluesource/"
).
concat
(
String
.
valueOf
(
jobId
)).
concat
(
"_"
).
concat
(
String
.
valueOf
(
glueUpdatetime
)).
concat
(
".py"
);
}
else
if
(
GlueTypeEnum
.
GLUE_NODEJS
==
glueType
)
{
cmd
=
"node"
;
scriptFileName
=
XxlJobFileAppender
.
getLogPath
().
concat
(
"gluesource/"
).
concat
(
String
.
valueOf
(
jobId
)).
concat
(
"_"
).
concat
(
String
.
valueOf
(
glueUpdatetime
)).
concat
(
".js"
);
if
(!
glueType
.
isScript
())
{
return
new
ReturnT
<
String
>(
IJobHandler
.
FAIL
.
getCode
(),
"glueType["
+
glueType
+
"] invalid."
);
}
// cmd
String
cmd
=
glueType
.
getCmd
();
// make script file
String
scriptFileName
=
XxlJobFileAppender
.
getLogPath
()
.
concat
(
"/gluesource/"
)
.
concat
(
String
.
valueOf
(
jobId
))
.
concat
(
"_"
)
.
concat
(
String
.
valueOf
(
glueUpdatetime
))
.
concat
(
glueType
.
getSuffix
());
ScriptUtil
.
markScriptFile
(
scriptFileName
,
gluesource
);
// log file
String
logFileName
=
XxlJobFileAppender
.
getLogPath
().
concat
(
XxlJobFileAppender
.
contextHolder
.
get
()
);
String
logFileName
=
XxlJobFileAppender
.
contextHolder
.
get
(
);
// invoke
XxlJobLogger
.
log
(
"----------- script file:"
+
scriptFileName
+
" -----------"
);
...
...
xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobFileAppender.java
浏览文件 @
bf866984
...
...
@@ -20,53 +20,47 @@ public class XxlJobFileAppender {
public
static
final
InheritableThreadLocal
<
String
>
contextHolder
=
new
InheritableThreadLocal
<
String
>();
private
static
String
logPath
=
"/data/applogs/xxl-job/jobhandler/"
;
// log base path
private
static
String
logBasePath
=
"/data/applogs/xxl-job/jobhandler"
;
public
static
void
initLogPath
(
String
logPath
){
// init
if
(
logPath
!=
null
&&
logPath
.
trim
().
length
()>
0
)
{
/*if (!logPath.endsWith("/")) {
logPath = logPath.concat("/");
}*/
XxlJobFileAppender
.
logPath
=
logPath
;
logBasePath
=
logPath
;
}
// mk dir
File
logPathDir
=
new
File
(
XxlJobFileAppender
.
log
Path
);
// mk
base
dir
File
logPathDir
=
new
File
(
logBase
Path
);
if
(!
logPathDir
.
exists
())
{
logPathDir
.
mkdirs
();
}
XxlJobFileAppender
.
logPath
=
logPathDir
.
getPath
();
logBasePath
=
logPathDir
.
getPath
();
// mk glue dir
File
glueBaseDir
=
new
File
(
logPathDir
,
"gluesource"
);
if
(!
glueBaseDir
.
exists
())
{
glueBaseDir
.
mkdirs
();
}
}
public
static
String
getLogPath
()
{
return
logPath
;
return
log
Base
Path
;
}
/**
* log filename
: yyyy-MM-dd/9999.log
* log filename
, like "logPath/yyyy-MM-dd/9999.log"
*
* @param triggerDate
* @param logId
* @return
*/
public
static
String
makeLogFileName
(
Date
triggerDate
,
int
logId
)
{
// filePath/
File
filePathDir
=
new
File
(
logPath
);
if
(!
filePathDir
.
exists
())
{
filePathDir
.
mkdirs
();
}
// filePath/yyyy-MM-dd/
// filePath/yyyy-MM-dd/9999.log
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
// avoid concurrent problem, can not be static
String
nowFormat
=
sdf
.
format
(
new
Date
());
File
filePathDateDir
=
new
File
(
filePathDir
,
nowFormat
);
if
(!
filePathDateDir
.
exists
())
{
filePathDateDir
.
mkdirs
();
}
// filePath/yyyy-MM-dd/9999.log
String
logFileName
=
sdf
.
format
(
triggerDate
).
concat
(
"/"
).
concat
(
String
.
valueOf
(
logId
)).
concat
(
".log"
);
String
logFileName
=
getLogPath
()
.
concat
(
"/"
)
.
concat
(
sdf
.
format
(
triggerDate
))
.
concat
(
"/"
)
.
concat
(
String
.
valueOf
(
logId
))
.
concat
(
".log"
);
return
logFileName
;
}
...
...
@@ -78,17 +72,11 @@ public class XxlJobFileAppender {
*/
public
static
void
appendLog
(
String
logFileName
,
String
appendLog
)
{
// log
if
(
appendLog
==
null
)
{
appendLog
=
""
;
}
appendLog
+=
"\r\n"
;
// log file
if
(
logFileName
==
null
||
logFileName
.
trim
().
length
()==
0
)
{
return
;
}
File
logFile
=
new
File
(
log
Path
,
log
FileName
);
File
logFile
=
new
File
(
logFileName
);
if
(!
logFile
.
exists
())
{
try
{
...
...
@@ -98,6 +86,12 @@ public class XxlJobFileAppender {
return
;
}
}
// log
if
(
appendLog
==
null
)
{
appendLog
=
""
;
}
appendLog
+=
"\r\n"
;
// append file content
try
{
...
...
@@ -133,7 +127,7 @@ public class XxlJobFileAppender {
if
(
logFileName
==
null
||
logFileName
.
trim
().
length
()==
0
)
{
return
new
LogResult
(
fromLineNum
,
0
,
"readLog fail, logFile not found"
,
true
);
}
File
logFile
=
new
File
(
log
Path
,
log
FileName
);
File
logFile
=
new
File
(
logFileName
);
if
(!
logFile
.
exists
())
{
return
new
LogResult
(
fromLineNum
,
0
,
"readLog fail, logFile not exists"
,
true
);
...
...
xxl-job-core/src/main/java/com/xxl/job/core/thread/JobThread.java
浏览文件 @
bf866984
...
...
@@ -111,7 +111,7 @@ public class JobThread extends Thread{
?
(
String
[])(
Arrays
.
asList
(
triggerParam
.
getExecutorParams
().
split
(
","
)).
toArray
())
:
null
;
// log filename
: yyyy-MM-dd/9999.log
// log filename
, like "logPath/yyyy-MM-dd/9999.log"
String
logFileName
=
XxlJobFileAppender
.
makeLogFileName
(
new
Date
(
triggerParam
.
getLogDateTim
()),
triggerParam
.
getLogId
());
XxlJobFileAppender
.
contextHolder
.
set
(
logFileName
);
ShardingUtil
.
setShardingVo
(
new
ShardingUtil
.
ShardingVO
(
triggerParam
.
getBroadcastIndex
(),
triggerParam
.
getBroadcastTotal
()));
...
...
xxl-job-core/src/main/java/com/xxl/job/core/util/ScriptUtil.java
浏览文件 @
bf866984
package
com
.
xxl
.
job
.
core
.
util
;
import
com.xxl.job.core.log.XxlJobFileAppender
;
import
org.apache.commons.exec.CommandLine
;
import
org.apache.commons.exec.DefaultExecutor
;
import
org.apache.commons.exec.PumpStreamHandler
;
import
java.io.File
;
import
java.io.FileOutputStream
;
import
java.io.IOException
;
...
...
@@ -27,18 +25,6 @@ public class ScriptUtil {
* @throws IOException
*/
public
static
void
markScriptFile
(
String
scriptFileName
,
String
content
)
throws
IOException
{
// filePath/
File
filePathDir
=
new
File
(
XxlJobFileAppender
.
getLogPath
());
if
(!
filePathDir
.
exists
())
{
filePathDir
.
mkdirs
();
}
// filePath/gluesource/
File
filePathSourceDir
=
new
File
(
filePathDir
,
"gluesource"
);
if
(!
filePathSourceDir
.
exists
())
{
filePathSourceDir
.
mkdirs
();
}
// make file, filePath/gluesource/666-123456789.py
FileOutputStream
fileOutputStream
=
null
;
try
{
...
...
xxl-job-executor-samples/xxl-job-executor-sample-jfinal/src/main/resources/xxl-job-executor.properties
浏览文件 @
bf866984
...
...
@@ -7,7 +7,7 @@ xxl.job.executor.ip=
xxl.job.executor.port
=
9997
### xxl-job log path
xxl.job.executor.logpath
=
/data/applogs/xxl-job/jobhandler
/
xxl.job.executor.logpath
=
/data/applogs/xxl-job/jobhandler
### xxl-job, access token
xxl.job.accessToken
=
\ No newline at end of file
xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/resources/xxl-job-executor.properties
浏览文件 @
bf866984
...
...
@@ -7,7 +7,7 @@ xxl.job.executor.ip=
xxl.job.executor.port
=
9999
### xxl-job log path
xxl.job.executor.logpath
=
/data/applogs/xxl-job/jobhandler
/
xxl.job.executor.logpath
=
/data/applogs/xxl-job/jobhandler
### xxl-job, access token
xxl.job.accessToken
=
\ No newline at end of file
xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/application.properties
浏览文件 @
bf866984
...
...
@@ -14,7 +14,7 @@ xxl.job.executor.ip=
xxl.job.executor.port
=
-1
### xxl-job log path
xxl.job.executor.logpath
=
/data/applogs/xxl-job/jobhandler
/
xxl.job.executor.logpath
=
/data/applogs/xxl-job/jobhandler
### xxl-job, access token
xxl.job.accessToken
=
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论