瀏覽代碼

修复Log路径生成异常问题;

xuxueli 8 年之前
父節點
當前提交
9325afea08

+ 21 - 0
xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/JobKeyUtil.java 查看文件

@@ -1,6 +1,7 @@
1 1
 package com.xxl.job.admin.core.util;
2 2
 
3 3
 import com.xxl.job.admin.core.model.XxlJobInfo;
4
+import org.apache.commons.lang.StringUtils;
4 5
 
5 6
 /**
6 7
  * job key util
@@ -20,4 +21,24 @@ public class JobKeyUtil {
20 21
                 .concat("_").concat(String.valueOf(xxlJobInfo.getId()));
21 22
     }
22 23
 
24
+    /**
25
+     * parse jobId from JobKey
26
+     *
27
+     * @param jobKey
28
+     * @return
29
+     */
30
+    public static int parseJobId(String jobKey){
31
+        if (jobKey!=null && jobKey.trim().length()>0) {
32
+            String[] jobKeyArr = jobKey.split("_");
33
+            if (jobKeyArr.length == 2) {
34
+                String jobIdStr = jobKeyArr[1];
35
+                if (StringUtils.isNotBlank(jobIdStr) && StringUtils.isNumeric(jobIdStr)) {
36
+                    int jobId = Integer.valueOf(jobIdStr);
37
+                    return jobId;
38
+                }
39
+            }
40
+        }
41
+        return -1;
42
+    }
43
+
23 44
 }

+ 4 - 3
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/AdminBizImpl.java 查看文件

@@ -5,6 +5,7 @@ import com.xxl.job.admin.core.model.XxlJobInfo;
5 5
 import com.xxl.job.admin.core.model.XxlJobLog;
6 6
 import com.xxl.job.admin.core.schedule.XxlJobDynamicScheduler;
7 7
 import com.xxl.job.admin.core.trigger.XxlJobTrigger;
8
+import com.xxl.job.admin.core.util.JobKeyUtil;
8 9
 import com.xxl.job.admin.dao.XxlJobInfoDao;
9 10
 import com.xxl.job.admin.dao.XxlJobLogDao;
10 11
 import com.xxl.job.admin.dao.XxlJobRegistryDao;
@@ -72,9 +73,9 @@ public class AdminBizImpl implements AdminBiz {
72 73
 
73 74
                 String[] childJobKeys = xxlJobInfo.getChildJobKey().split(",");
74 75
                 for (int i = 0; i < childJobKeys.length; i++) {
75
-                    String[] jobKeyArr = childJobKeys[i].split("_");
76
-                    if (jobKeyArr!=null && jobKeyArr.length==2) {
77
-                        ReturnT<String> triggerChildResult = xxlJobService.triggerJob(Integer.valueOf(jobKeyArr[1]));
76
+                    int childJobId = JobKeyUtil.parseJobId(childJobKeys[i]);
77
+                    if (childJobId > 0) {
78
+                        ReturnT<String> triggerChildResult = xxlJobService.triggerJob(childJobId);
78 79
 
79 80
                         // add msg
80 81
                         callbackMsg += MessageFormat.format("{0}/{1} [JobKey={2}], 触发{3}, 触发备注: {4} <br>",

+ 7 - 6
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java 查看文件

@@ -5,6 +5,7 @@ import com.xxl.job.admin.core.model.XxlJobGroup;
5 5
 import com.xxl.job.admin.core.model.XxlJobInfo;
6 6
 import com.xxl.job.admin.core.route.ExecutorRouteStrategyEnum;
7 7
 import com.xxl.job.admin.core.schedule.XxlJobDynamicScheduler;
8
+import com.xxl.job.admin.core.util.JobKeyUtil;
8 9
 import com.xxl.job.admin.dao.XxlJobGroupDao;
9 10
 import com.xxl.job.admin.dao.XxlJobInfoDao;
10 11
 import com.xxl.job.admin.dao.XxlJobLogDao;
@@ -107,11 +108,11 @@ public class XxlJobServiceImpl implements XxlJobService {
107 108
 		if (StringUtils.isNotBlank(jobInfo.getChildJobKey())) {
108 109
 			String[] childJobKeys = jobInfo.getChildJobKey().split(",");
109 110
 			for (String childJobKeyItem: childJobKeys) {
110
-				String[] childJobKeyArr = childJobKeyItem.split("_");
111
-				if (childJobKeyArr.length!=2) {
111
+				int childJobId = JobKeyUtil.parseJobId(childJobKeyItem);
112
+				if (childJobId <= 0) {
112 113
 					return new ReturnT<String>(ReturnT.FAIL_CODE, MessageFormat.format("子任务Key({0})格式错误", childJobKeyItem));
113 114
 				}
114
-				XxlJobInfo childJobInfo = xxlJobInfoDao.loadById(Integer.valueOf(childJobKeyArr[1]));
115
+				XxlJobInfo childJobInfo = xxlJobInfoDao.loadById(childJobId);
115 116
 				if (childJobInfo==null) {
116 117
 					return new ReturnT<String>(ReturnT.FAIL_CODE, MessageFormat.format("子任务Key({0})无效", childJobKeyItem));
117 118
 				}
@@ -170,11 +171,11 @@ public class XxlJobServiceImpl implements XxlJobService {
170 171
 		if (StringUtils.isNotBlank(jobInfo.getChildJobKey())) {
171 172
 			String[] childJobKeys = jobInfo.getChildJobKey().split(",");
172 173
 			for (String childJobKeyItem: childJobKeys) {
173
-				String[] childJobKeyArr = childJobKeyItem.split("_");
174
-				if (childJobKeyArr.length!=2) {
174
+				int childJobId = JobKeyUtil.parseJobId(childJobKeyItem);
175
+				if (childJobId <= 0) {
175 176
 					return new ReturnT<String>(ReturnT.FAIL_CODE, MessageFormat.format("子任务Key({0})格式错误", childJobKeyItem));
176 177
 				}
177
-                XxlJobInfo childJobInfo = xxlJobInfoDao.loadById(Integer.valueOf(childJobKeyArr[1]));
178
+                XxlJobInfo childJobInfo = xxlJobInfoDao.loadById(childJobId);
178 179
 				if (childJobInfo==null) {
179 180
 					return new ReturnT<String>(ReturnT.FAIL_CODE, MessageFormat.format("子任务Key({0})无效", childJobKeyItem));
180 181
 				}

+ 9 - 4
xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobFileAppender.java 查看文件

@@ -53,11 +53,16 @@ public class XxlJobFileAppender {
53 53
 	 * @return
54 54
 	 */
55 55
 	public static String makeLogFileName(Date triggerDate, int logId) {
56
-		// filePath/yyyy-MM-dd/9999.log
56
+
57
+		// filePath/yyyy-MM-dd
57 58
 		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");	// avoid concurrent problem, can not be static
58
-		String logFileName = getLogPath()
59
-				.concat("/")
60
-				.concat(sdf.format(triggerDate))
59
+		File logFilePath = new File(getLogPath(), sdf.format(triggerDate));
60
+		if (!logFilePath.exists()) {
61
+			logFilePath.mkdir();
62
+		}
63
+
64
+		// filePath/yyyy-MM-dd/9999.log
65
+		String logFileName = logFilePath.getPath()
61 66
 				.concat("/")
62 67
 				.concat(String.valueOf(logId))
63 68
 				.concat(".log");