From 9325afea089e8b99ba9aeac4993f55f872df12ec Mon Sep 17 00:00:00 2001 From: xuxueli <931591021@qq.com> Date: Fri, 22 Dec 2017 19:59:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DLog=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E7=94=9F=E6=88=90=E5=BC=82=E5=B8=B8=E9=97=AE=E9=A2=98=EF=BC=9B?= =?UTF-8?q?=20=E6=96=B0=E5=A2=9EJobKey=E5=A4=84=E7=90=86=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xxl/job/admin/core/util/JobKeyUtil.java | 21 +++++++++++++++++++ .../job/admin/service/impl/AdminBizImpl.java | 7 ++++--- .../admin/service/impl/XxlJobServiceImpl.java | 13 ++++++------ .../xxl/job/core/log/XxlJobFileAppender.java | 13 ++++++++---- 4 files changed, 41 insertions(+), 13 deletions(-) diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/JobKeyUtil.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/JobKeyUtil.java index 05378c6f..28aa8561 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/JobKeyUtil.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/JobKeyUtil.java @@ -1,6 +1,7 @@ package com.xxl.job.admin.core.util; import com.xxl.job.admin.core.model.XxlJobInfo; +import org.apache.commons.lang.StringUtils; /** * job key util @@ -20,4 +21,24 @@ public class JobKeyUtil { .concat("_").concat(String.valueOf(xxlJobInfo.getId())); } + /** + * parse jobId from JobKey + * + * @param jobKey + * @return + */ + public static int parseJobId(String jobKey){ + if (jobKey!=null && jobKey.trim().length()>0) { + String[] jobKeyArr = jobKey.split("_"); + if (jobKeyArr.length == 2) { + String jobIdStr = jobKeyArr[1]; + if (StringUtils.isNotBlank(jobIdStr) && StringUtils.isNumeric(jobIdStr)) { + int jobId = Integer.valueOf(jobIdStr); + return jobId; + } + } + } + return -1; + } + } diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/AdminBizImpl.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/AdminBizImpl.java index ba75365c..7831ea6a 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/AdminBizImpl.java +++ b/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; import com.xxl.job.admin.core.model.XxlJobLog; import com.xxl.job.admin.core.schedule.XxlJobDynamicScheduler; import com.xxl.job.admin.core.trigger.XxlJobTrigger; +import com.xxl.job.admin.core.util.JobKeyUtil; import com.xxl.job.admin.dao.XxlJobInfoDao; import com.xxl.job.admin.dao.XxlJobLogDao; import com.xxl.job.admin.dao.XxlJobRegistryDao; @@ -72,9 +73,9 @@ public class AdminBizImpl implements AdminBiz { String[] childJobKeys = xxlJobInfo.getChildJobKey().split(","); for (int i = 0; i < childJobKeys.length; i++) { - String[] jobKeyArr = childJobKeys[i].split("_"); - if (jobKeyArr!=null && jobKeyArr.length==2) { - ReturnT triggerChildResult = xxlJobService.triggerJob(Integer.valueOf(jobKeyArr[1])); + int childJobId = JobKeyUtil.parseJobId(childJobKeys[i]); + if (childJobId > 0) { + ReturnT triggerChildResult = xxlJobService.triggerJob(childJobId); // add msg callbackMsg += MessageFormat.format("{0}/{1} [JobKey={2}], 触发{3}, 触发备注: {4}
", diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java index 2eccb310..c976bc42 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java +++ b/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; import com.xxl.job.admin.core.model.XxlJobInfo; import com.xxl.job.admin.core.route.ExecutorRouteStrategyEnum; import com.xxl.job.admin.core.schedule.XxlJobDynamicScheduler; +import com.xxl.job.admin.core.util.JobKeyUtil; import com.xxl.job.admin.dao.XxlJobGroupDao; import com.xxl.job.admin.dao.XxlJobInfoDao; import com.xxl.job.admin.dao.XxlJobLogDao; @@ -107,11 +108,11 @@ public class XxlJobServiceImpl implements XxlJobService { if (StringUtils.isNotBlank(jobInfo.getChildJobKey())) { String[] childJobKeys = jobInfo.getChildJobKey().split(","); for (String childJobKeyItem: childJobKeys) { - String[] childJobKeyArr = childJobKeyItem.split("_"); - if (childJobKeyArr.length!=2) { + int childJobId = JobKeyUtil.parseJobId(childJobKeyItem); + if (childJobId <= 0) { return new ReturnT(ReturnT.FAIL_CODE, MessageFormat.format("子任务Key({0})格式错误", childJobKeyItem)); } - XxlJobInfo childJobInfo = xxlJobInfoDao.loadById(Integer.valueOf(childJobKeyArr[1])); + XxlJobInfo childJobInfo = xxlJobInfoDao.loadById(childJobId); if (childJobInfo==null) { return new ReturnT(ReturnT.FAIL_CODE, MessageFormat.format("子任务Key({0})无效", childJobKeyItem)); } @@ -170,11 +171,11 @@ public class XxlJobServiceImpl implements XxlJobService { if (StringUtils.isNotBlank(jobInfo.getChildJobKey())) { String[] childJobKeys = jobInfo.getChildJobKey().split(","); for (String childJobKeyItem: childJobKeys) { - String[] childJobKeyArr = childJobKeyItem.split("_"); - if (childJobKeyArr.length!=2) { + int childJobId = JobKeyUtil.parseJobId(childJobKeyItem); + if (childJobId <= 0) { return new ReturnT(ReturnT.FAIL_CODE, MessageFormat.format("子任务Key({0})格式错误", childJobKeyItem)); } - XxlJobInfo childJobInfo = xxlJobInfoDao.loadById(Integer.valueOf(childJobKeyArr[1])); + XxlJobInfo childJobInfo = xxlJobInfoDao.loadById(childJobId); if (childJobInfo==null) { return new ReturnT(ReturnT.FAIL_CODE, MessageFormat.format("子任务Key({0})无效", childJobKeyItem)); } 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 60166e6b..0e9dcc23 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 @@ -53,11 +53,16 @@ public class XxlJobFileAppender { * @return */ public static String makeLogFileName(Date triggerDate, int logId) { - // filePath/yyyy-MM-dd/9999.log + + // filePath/yyyy-MM-dd SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // avoid concurrent problem, can not be static - String logFileName = getLogPath() - .concat("/") - .concat(sdf.format(triggerDate)) + File logFilePath = new File(getLogPath(), sdf.format(triggerDate)); + if (!logFilePath.exists()) { + logFilePath.mkdir(); + } + + // filePath/yyyy-MM-dd/9999.log + String logFileName = logFilePath.getPath() .concat("/") .concat(String.valueOf(logId)) .concat(".log"); -- GitLab