diff --git a/doc/XXL-JOB官方文档.md b/doc/XXL-JOB官方文档.md index 1645e3d9..1222ee52 100644 --- a/doc/XXL-JOB官方文档.md +++ b/doc/XXL-JOB官方文档.md @@ -1077,6 +1077,8 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段 - 12、调度报表优化,支持时间区间筛选; - 13、Log组件支持输出异常栈信息,底层实现优化; - 14、失败重试:调度中心调度失败且启用"失败重试"策略时,将会自动重试一次;执行器执行失败且回调失败重试状态时,也将会自动重试一次; +- 15、Log地址格式兼容,支持非"/"结尾路径配置; + ### TODO LIST - 1、任务权限管理:执行器为粒度分配权限,核心操作校验权限; @@ -1096,9 +1098,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段 - 15、Bean模式任务,JobHandler自动从执行器中查询展示为下拉框,选择后自动填充任务名称等属性; - 16、任务告警邮件优化,调整为表格形式; - 17、JobHandler提供 init/destroy 方法,支持自定义任务线程销毁逻辑; -- 18、执行器回调地址/日志地址格式兼容,是否已"/"结尾均支持; - - +- 18、执行器回调地址格式兼容,支持非"/"结尾路径配置; ## 七、其他 diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java b/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java index 4ecb461c..f58853c1 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java @@ -72,14 +72,10 @@ public class XxlJobExecutor implements ApplicationContextAware { initAdminBizList(adminAddresses, accessToken); // init executor-jobHandlerRepository - if (applicationContext != null) { - initJobHandlerRepository(applicationContext); - } + initJobHandlerRepository(applicationContext); // init logpath - if (logPath!=null && logPath.trim().length()>0) { - XxlJobFileAppender.logPath = logPath; - } + XxlJobFileAppender.initLogPath(logPath); // init executor-server initExecutorServer(port, ip, appName, accessToken); @@ -145,6 +141,10 @@ public class XxlJobExecutor implements ApplicationContextAware { return jobHandlerRepository.get(name); } private static void initJobHandlerRepository(ApplicationContext applicationContext){ + if (applicationContext == null) { + return; + } + // init job handler action Map serviceBeanMap = applicationContext.getBeansWithAnnotation(JobHandler.class); diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/handler/impl/ScriptJobHandler.java b/xxl-job-core/src/main/java/com/xxl/job/core/handler/impl/ScriptJobHandler.java index 93ca86a4..70ebb7a8 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/handler/impl/ScriptJobHandler.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/handler/impl/ScriptJobHandler.java @@ -36,20 +36,20 @@ public class ScriptJobHandler extends IJobHandler { String scriptFileName = null; if (GlueTypeEnum.GLUE_SHELL == glueType) { cmd = "bash"; - scriptFileName = XxlJobFileAppender.logPath.concat("gluesource/").concat(String.valueOf(jobId)).concat("_").concat(String.valueOf(glueUpdatetime)).concat(".sh"); + 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.logPath.concat("gluesource/").concat(String.valueOf(jobId)).concat("_").concat(String.valueOf(glueUpdatetime)).concat(".py"); + 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.logPath.concat("gluesource/").concat(String.valueOf(jobId)).concat("_").concat(String.valueOf(glueUpdatetime)).concat(".js"); + scriptFileName = XxlJobFileAppender.getLogPath().concat("gluesource/").concat(String.valueOf(jobId)).concat("_").concat(String.valueOf(glueUpdatetime)).concat(".js"); } // make script file ScriptUtil.markScriptFile(scriptFileName, gluesource); // log file - String logFileName = XxlJobFileAppender.logPath.concat(XxlJobFileAppender.contextHolder.get()); + String logFileName = XxlJobFileAppender.getLogPath().concat(XxlJobFileAppender.contextHolder.get()); // invoke XxlJobLogger.log("----------- script file:"+ scriptFileName +" -----------"); diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobFileAppender.java b/xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobFileAppender.java index 2ed2f7fa..cd6ffacf 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobFileAppender.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobFileAppender.java @@ -18,7 +18,28 @@ public class XxlJobFileAppender { // for JobThread (support log for child thread of job handler) //public static ThreadLocal contextHolder = new ThreadLocal(); public static final InheritableThreadLocal contextHolder = new InheritableThreadLocal(); - public static String logPath = "/data/applogs/xxl-job/jobhandler/"; + + + private static String logPath = "/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; + } + // mk dir + File logPathDir = new File(XxlJobFileAppender.logPath); + if (!logPathDir.exists()) { + logPathDir.mkdirs(); + } + XxlJobFileAppender.logPath = logPathDir.getPath(); + } + public static String getLogPath() { + return logPath; + } + /** * log filename: yyyy-MM-dd/9999.log diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/util/ScriptUtil.java b/xxl-job-core/src/main/java/com/xxl/job/core/util/ScriptUtil.java index 95c199d2..dc335a63 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/util/ScriptUtil.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/util/ScriptUtil.java @@ -28,7 +28,7 @@ public class ScriptUtil { */ public static void markScriptFile(String scriptFileName, String content) throws IOException { // filePath/ - File filePathDir = new File(XxlJobFileAppender.logPath); + File filePathDir = new File(XxlJobFileAppender.getLogPath()); if (!filePathDir.exists()) { filePathDir.mkdirs(); }