文件操作优化
This commit is contained in:
parent
3c95ba5ae4
commit
bf86698416
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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 +" -----------");
|
||||
|
|
|
@ -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.logPath);
|
||||
// mk base dir
|
||||
File logPathDir = new File(logBasePath);
|
||||
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 logBasePath;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 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(logPath, logFileName);
|
||||
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(logPath, logFileName);
|
||||
File logFile = new File(logFileName);
|
||||
|
||||
if (!logFile.exists()) {
|
||||
return new LogResult(fromLineNum, 0, "readLog fail, logFile not exists", true);
|
||||
|
|
|
@ -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()));
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
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 {
|
||||
|
|
|
@ -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=
|
|
@ -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=
|
|
@ -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=
|
||||
|
|
Loading…
Reference in New Issue