From 6b91f40889ca5e333c91e1b19763f005a5b3d65a Mon Sep 17 00:00:00 2001 From: "xueli.xue" Date: Fri, 24 Feb 2017 17:00:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E7=89=B9=E6=80=A7=EF=BC=9A=20-=201?= =?UTF-8?q?=E3=80=81IP=E5=B7=A5=E5=85=B7=E7=B1=BB=E8=8E=B7=E5=8F=96IP?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96=EF=BC=8CIP=E9=9D=99?= =?UTF-8?q?=E6=80=81=E7=BC=93=E5=AD=98=EF=BC=9B=20-=202=E3=80=81=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E5=99=A8=E3=80=81=E8=B0=83=E5=BA=A6=E4=B8=AD=E5=BF=83?= =?UTF-8?q?=EF=BC=8C=E5=9D=87=E6=94=AF=E6=8C=81=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E6=B3=A8=E5=86=8CIP=E5=9C=B0=E5=9D=80=EF=BC=9B=E8=A7=A3?= =?UTF-8?q?=E5=86=B3=E6=9C=BA=E5=99=A8=E5=A4=9A=E7=BD=91=E5=8D=A1=E6=97=B6?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E7=BD=91=E5=8D=A1=E6=B3=A8=E5=86=8C=E7=9A=84?= =?UTF-8?q?=E6=83=85=E5=86=B5=EF=BC=9B=20-=203=E3=80=81=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E8=B7=A8=E5=A4=A9=E6=89=A7=E8=A1=8C=E6=97=B6=E7=94=9F=E6=88=90?= =?UTF-8?q?=E5=A4=9A=E4=BB=BD=E6=97=A5=E5=BF=97=E6=96=87=E4=BB=B6=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 17 ++-- .../admin/core/jobbean/RemoteHttpJobBean.java | 7 +- .../xxl/job/core/log/XxlJobFileAppender.java | 80 +++++++++---------- .../xxl/job/core/router/action/LogAction.java | 5 +- .../xxl/job/core/router/thread/JobThread.java | 6 +- 5 files changed, 63 insertions(+), 52 deletions(-) diff --git a/README.md b/README.md index 65e1fc6d..cd7d945a 100644 --- a/README.md +++ b/README.md @@ -705,8 +705,10 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段 - 5、已推送V1.5.0和V1.5.1至Maven中央仓库; #### 6.10 版本 V1.5.2 特性 -- 1、IP工具类优化,IP静态缓存; -- 2、执行器、调度中心,支持自定义注册IP地址;解决机器多网卡时错误网卡注册的情况; +- 1、IP工具类获取IP逻辑优化,IP静态缓存; +- 2、执行器、调度中心,均支持自定义注册IP地址;解决机器多网卡时错误网卡注册的情况; +- 3、任务跨天执行时生成多份日志文件的问题修复; + #### 规划中 - 1、集群执行器选择规则自定义:单点=选择第一个,随机=随机选择一个; @@ -717,11 +719,12 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段 Pass:后续调度被Pass; - 4、后续优化:在线修改密码; - 5、兼容oracle; -- 6、跨天日志write问题修复; -- 7、rolling日志; -- 8、执行器,server启动,注册逻辑调整; -- 9、通过listener或stop方法,容器销毁时销毁线程;Daemon方式有时不太理想; -- 10、调度重试机制; +- 6、rolling日志; +- 7、执行器,server启动,注册逻辑调整; +- 8、通过listener或stop方法,容器销毁时销毁线程;Daemon方式有时不太理想; +- 9、调度重试机制; +- 10、报表:当日报表、一周报表、一年报表等等; +- 11、通讯:hex 通讯调整为 http-rpc 模式; ## 七、其他 diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java index 18e74372..fb6a9c7c 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java @@ -52,6 +52,9 @@ public class RemoteHttpJobBean extends QuartzJobBean { } adminAddressSet.add(DynamicSchedulerUtil.getCallbackAddress()); + // update trigger info 1/2 + jobLog.setTriggerTime(new Date()); + // trigger request RequestModel requestModel = new RequestModel(); requestModel.setTimestamp(System.currentTimeMillis()); @@ -63,6 +66,7 @@ public class RemoteHttpJobBean extends QuartzJobBean { requestModel.setGlueSwitch((jobInfo.getGlueSwitch()==0)?false:true); requestModel.setLogAddress(adminAddressSet); requestModel.setLogId(jobLog.getId()); + requestModel.setLogDateTim(jobLog.getTriggerTime().getTime()); // parse address List addressList = new ArrayList(); @@ -77,8 +81,7 @@ public class RemoteHttpJobBean extends QuartzJobBean { jobLog.setExecutorParam(jobInfo.getExecutorParam()); logger.info(">>>>>>>>>>> xxl-job failoverTrigger response, jobId:{}, responseModel:{}", jobLog.getId(), responseModel.toString()); - // update trigger info - jobLog.setTriggerTime(new Date()); + // update trigger info 2/2 jobLog.setTriggerStatus(responseModel.getStatus()); jobLog.setTriggerMsg(responseModel.getMsg()); DynamicSchedulerUtil.xxlJobLogDao.updateTriggerInfo(jobLog); 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 4fa1fc05..0e1a3955 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 @@ -23,30 +23,43 @@ public class XxlJobFileAppender extends AppenderSkeleton { public void setFilePath(String filePath) { XxlJobFileAppender.filePath = filePath; } - + + /** + * log filename: yyyy-MM-dd/9999.log + * + * @param triggerDate + * @param logId + * @return + */ + public static String makeLogFileName(Date triggerDate, int logId) { + + // filePath/ + File filePathDir = new File(filePath); + if (!filePathDir.exists()) { + filePathDir.mkdirs(); + } + + // filePath/yyyy-MM-dd/ + 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 = XxlJobFileAppender.sdf.format(triggerDate).concat("/").concat(String.valueOf(logId)).concat(".log"); + return logFileName; + } + @Override protected void append(LoggingEvent event) { - String trigger_log_id = contextHolder.get(); - if (trigger_log_id==null || trigger_log_id.trim().length()==0) { + + String logFileName = contextHolder.get(); + if (logFileName==null || logFileName.trim().length()==0) { return; } - - // filePath/ - File filePathDir = new File(filePath); - if (!filePathDir.exists()) { - filePathDir.mkdirs(); - } - - // filePath/yyyy-MM-dd/ - 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 = trigger_log_id.concat(".log"); - File logFile = new File(filePathDateDir, logFileName); + File logFile = new File(filePath, logFileName); + if (!logFile.exists()) { try { logFile.createNewFile(); @@ -101,31 +114,16 @@ public class XxlJobFileAppender extends AppenderSkeleton { /** * support read log-file - * @param triggerDate - * @param trigger_log_id + * @param logFileName * @return log content */ - public static String readLog(Date triggerDate, int trigger_log_id ){ - if (triggerDate==null || trigger_log_id<=0) { + public static String readLog(String logFileName ){ + + if (logFileName==null || logFileName.trim().length()==0) { return null; } - - // filePath/ - File filePathDir = new File(filePath); - if (!filePathDir.exists()) { - filePathDir.mkdirs(); - } - - // filePath/yyyy-MM-dd/ - String nowFormat = sdf.format(triggerDate); - File filePathDateDir = new File(filePathDir, nowFormat); - if (!filePathDateDir.exists()) { - filePathDateDir.mkdirs(); - } - - // filePath/yyyy-MM-dd/9999.log - String logFileName = String.valueOf(trigger_log_id).concat(".log"); - File logFile = new File(filePathDateDir, logFileName); + File logFile = new File(filePath, logFileName); + if (!logFile.exists()) { return null; } diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/router/action/LogAction.java b/xxl-job-core/src/main/java/com/xxl/job/core/router/action/LogAction.java index 8c9923a5..3cbd54ca 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/router/action/LogAction.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/router/action/LogAction.java @@ -14,7 +14,10 @@ public class LogAction extends IAction { @Override public ResponseModel execute(RequestModel requestModel) { - String logConteng = XxlJobFileAppender.readLog(new Date(requestModel.getLogDateTim()), requestModel.getLogId()); + // log filename: yyyy-MM-dd/9999.log + String logFileName = XxlJobFileAppender.makeLogFileName(new Date(requestModel.getLogDateTim()), requestModel.getLogId()); + + String logConteng = XxlJobFileAppender.readLog(logFileName); return new ResponseModel(ResponseModel.SUCCESS, logConteng); } diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/router/thread/JobThread.java b/xxl-job-core/src/main/java/com/xxl/job/core/router/thread/JobThread.java index 0ab17723..431c7908 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/router/thread/JobThread.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/router/thread/JobThread.java @@ -11,6 +11,7 @@ import org.slf4j.LoggerFactory; import java.io.PrintWriter; import java.io.StringWriter; import java.util.Arrays; +import java.util.Date; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; @@ -78,7 +79,10 @@ public class JobThread extends Thread{ String _msg = null; try { - XxlJobFileAppender.contextHolder.set(String.valueOf(triggerDate.getLogId())); + // log filename: yyyy-MM-dd/9999.log + String logFileName = XxlJobFileAppender.makeLogFileName(new Date(triggerDate.getLogDateTim()), triggerDate.getLogId()); + + XxlJobFileAppender.contextHolder.set(logFileName); logger.info("----------- xxl-job job handle start -----------"); handler.execute(handlerParams); } catch (Exception e) {