Browse Source

新特性:
- 1、IP工具类获取IP逻辑优化,IP静态缓存;
- 2、执行器、调度中心,均支持自定义注册IP地址;解决机器多网卡时错误网卡注册的情况;
- 3、任务跨天执行时生成多份日志文件的问题修复;

xueli.xue 8 years ago
parent
commit
6b91f40889

+ 10 - 7
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 模式;
 
 ## 七、其他
 

+ 5 - 2
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<String> addressList = new ArrayList<String>();
@@ -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);

+ 39 - 41
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;
 		}

+ 4 - 1
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);
     }
 

+ 5 - 1
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) {