Selaa lähdekoodia

Log地址格式兼容,支持非"/"结尾路径配置;

xuxueli 8 vuotta sitten
vanhempi
commit
3c95ba5ae4

+ 3 - 3
doc/XXL-JOB官方文档.md Näytä tiedosto

@@ -1077,6 +1077,8 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
1077 1077
 - 12、调度报表优化,支持时间区间筛选;
1078 1078
 - 13、Log组件支持输出异常栈信息,底层实现优化;
1079 1079
 - 14、失败重试:调度中心调度失败且启用"失败重试"策略时,将会自动重试一次;执行器执行失败且回调失败重试状态时,也将会自动重试一次;
1080
+- 15、Log地址格式兼容,支持非"/"结尾路径配置;
1081
+
1080 1082
 
1081 1083
 ### TODO LIST
1082 1084
 - 1、任务权限管理:执行器为粒度分配权限,核心操作校验权限;
@@ -1096,9 +1098,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
1096 1098
 - 15、Bean模式任务,JobHandler自动从执行器中查询展示为下拉框,选择后自动填充任务名称等属性;
1097 1099
 - 16、任务告警邮件优化,调整为表格形式;
1098 1100
 - 17、JobHandler提供 init/destroy 方法,支持自定义任务线程销毁逻辑;
1099
-- 18、执行器回调地址/日志地址格式兼容,是否已"/"结尾均支持;
1100
-
1101
-
1101
+- 18、执行器回调地址格式兼容,支持非"/"结尾路径配置;
1102 1102
 
1103 1103
 
1104 1104
 ## 七、其他

+ 6 - 6
xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java Näytä tiedosto

@@ -72,14 +72,10 @@ public class XxlJobExecutor implements ApplicationContextAware {
72 72
         initAdminBizList(adminAddresses, accessToken);
73 73
 
74 74
         // init executor-jobHandlerRepository
75
-        if (applicationContext != null) {
76
-            initJobHandlerRepository(applicationContext);
77
-        }
75
+        initJobHandlerRepository(applicationContext);
78 76
 
79 77
         // init logpath
80
-        if (logPath!=null && logPath.trim().length()>0) {
81
-            XxlJobFileAppender.logPath = logPath;
82
-        }
78
+        XxlJobFileAppender.initLogPath(logPath);
83 79
 
84 80
         // init executor-server
85 81
         initExecutorServer(port, ip, appName, accessToken);
@@ -145,6 +141,10 @@ public class XxlJobExecutor implements ApplicationContextAware {
145 141
         return jobHandlerRepository.get(name);
146 142
     }
147 143
     private static void initJobHandlerRepository(ApplicationContext applicationContext){
144
+        if (applicationContext == null) {
145
+            return;
146
+        }
147
+
148 148
         // init job handler action
149 149
         Map<String, Object> serviceBeanMap = applicationContext.getBeansWithAnnotation(JobHandler.class);
150 150
 

+ 4 - 4
xxl-job-core/src/main/java/com/xxl/job/core/handler/impl/ScriptJobHandler.java Näytä tiedosto

@@ -36,20 +36,20 @@ public class ScriptJobHandler extends IJobHandler {
36 36
         String scriptFileName = null;
37 37
         if (GlueTypeEnum.GLUE_SHELL == glueType) {
38 38
             cmd = "bash";
39
-            scriptFileName = XxlJobFileAppender.logPath.concat("gluesource/").concat(String.valueOf(jobId)).concat("_").concat(String.valueOf(glueUpdatetime)).concat(".sh");
39
+            scriptFileName = XxlJobFileAppender.getLogPath().concat("gluesource/").concat(String.valueOf(jobId)).concat("_").concat(String.valueOf(glueUpdatetime)).concat(".sh");
40 40
         } else if (GlueTypeEnum.GLUE_PYTHON == glueType) {
41 41
             cmd = "python";
42
-            scriptFileName = XxlJobFileAppender.logPath.concat("gluesource/").concat(String.valueOf(jobId)).concat("_").concat(String.valueOf(glueUpdatetime)).concat(".py");
42
+            scriptFileName = XxlJobFileAppender.getLogPath().concat("gluesource/").concat(String.valueOf(jobId)).concat("_").concat(String.valueOf(glueUpdatetime)).concat(".py");
43 43
         } else if (GlueTypeEnum.GLUE_NODEJS == glueType) {
44 44
             cmd = "node";
45
-            scriptFileName = XxlJobFileAppender.logPath.concat("gluesource/").concat(String.valueOf(jobId)).concat("_").concat(String.valueOf(glueUpdatetime)).concat(".js");
45
+            scriptFileName = XxlJobFileAppender.getLogPath().concat("gluesource/").concat(String.valueOf(jobId)).concat("_").concat(String.valueOf(glueUpdatetime)).concat(".js");
46 46
         }
47 47
 
48 48
         // make script file
49 49
         ScriptUtil.markScriptFile(scriptFileName, gluesource);
50 50
 
51 51
         // log file
52
-        String logFileName = XxlJobFileAppender.logPath.concat(XxlJobFileAppender.contextHolder.get());
52
+        String logFileName = XxlJobFileAppender.getLogPath().concat(XxlJobFileAppender.contextHolder.get());
53 53
 
54 54
         // invoke
55 55
         XxlJobLogger.log("----------- script file:"+ scriptFileName +" -----------");

+ 22 - 1
xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobFileAppender.java Näytä tiedosto

@@ -18,7 +18,28 @@ public class XxlJobFileAppender {
18 18
 	// for JobThread (support log for child thread of job handler)
19 19
 	//public static ThreadLocal<String> contextHolder = new ThreadLocal<String>();
20 20
 	public static final InheritableThreadLocal<String> contextHolder = new InheritableThreadLocal<String>();
21
-	public static String logPath = "/data/applogs/xxl-job/jobhandler/";
21
+
22
+
23
+	private static String logPath = "/data/applogs/xxl-job/jobhandler/";
24
+	public static void initLogPath(String logPath){
25
+		// init
26
+		if (logPath!=null && logPath.trim().length()>0) {
27
+			/*if (!logPath.endsWith("/")) {
28
+				logPath = logPath.concat("/");
29
+			}*/
30
+			XxlJobFileAppender.logPath = logPath;
31
+		}
32
+		// mk dir
33
+		File logPathDir = new File(XxlJobFileAppender.logPath);
34
+		if (!logPathDir.exists()) {
35
+			logPathDir.mkdirs();
36
+		}
37
+		XxlJobFileAppender.logPath = logPathDir.getPath();
38
+	}
39
+	public static String getLogPath() {
40
+		return logPath;
41
+	}
42
+
22 43
 
23 44
 	/**
24 45
 	 * log filename: yyyy-MM-dd/9999.log

+ 1 - 1
xxl-job-core/src/main/java/com/xxl/job/core/util/ScriptUtil.java Näytä tiedosto

@@ -28,7 +28,7 @@ public class ScriptUtil {
28 28
      */
29 29
     public static void markScriptFile(String scriptFileName, String content) throws IOException {
30 30
         // filePath/
31
-        File filePathDir = new File(XxlJobFileAppender.logPath);
31
+        File filePathDir = new File(XxlJobFileAppender.getLogPath());
32 32
         if (!filePathDir.exists()) {
33 33
             filePathDir.mkdirs();
34 34
         }