Explorar el Código

任务回调结果优化,支持展示在Rolling log中,方便问题排查

xuxueli hace 7 años
padre
commit
22da65c215

+ 1 - 1
doc/XXL-JOB官方文档.md

@@ -1199,7 +1199,7 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
 - 8、Window机器下File.separator不兼容问题修复;
 - 9、任务日志查询速度优化,百万级别日志量搜索速度提升1000倍;
 - 10、底层LocalCache组件兼容性优化,支持jdk、jdk10编译部署;
-- 11、[迭代中]回调log优化,支持展示在rolling log中,方便排查问题
+- 11、任务回调结果优化,支持展示在Rolling log中,方便问题排查
 - 12、脚本任务异常Log输出优化;
 
 

+ 14 - 1
xxl-job-core/src/main/java/com/xxl/job/core/biz/model/HandleCallbackParam.java

@@ -9,11 +9,14 @@ public class HandleCallbackParam implements Serializable {
     private static final long serialVersionUID = 42L;
 
     private int logId;
+    private long logDateTim;
+
     private ReturnT<String> executeResult;
 
     public HandleCallbackParam(){}
-    public HandleCallbackParam(int logId, ReturnT<String> executeResult) {
+    public HandleCallbackParam(int logId, long logDateTim, ReturnT<String> executeResult) {
         this.logId = logId;
+        this.logDateTim = logDateTim;
         this.executeResult = executeResult;
     }
 
@@ -25,6 +28,14 @@ public class HandleCallbackParam implements Serializable {
         this.logId = logId;
     }
 
+    public long getLogDateTim() {
+        return logDateTim;
+    }
+
+    public void setLogDateTim(long logDateTim) {
+        this.logDateTim = logDateTim;
+    }
+
     public ReturnT<String> getExecuteResult() {
         return executeResult;
     }
@@ -37,7 +48,9 @@ public class HandleCallbackParam implements Serializable {
     public String toString() {
         return "HandleCallbackParam{" +
                 "logId=" + logId +
+                ", logDateTim=" + logDateTim +
                 ", executeResult=" + executeResult +
                 '}';
     }
+
 }

+ 3 - 4
xxl-job-core/src/main/java/com/xxl/job/core/thread/JobThread.java

@@ -14,7 +14,6 @@ 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;
@@ -148,11 +147,11 @@ public class JobThread extends Thread{
                     // callback handler info
                     if (!toStop) {
                         // commonm
-                        TriggerCallbackThread.pushCallBack(new HandleCallbackParam(triggerParam.getLogId(), executeResult));
+                        TriggerCallbackThread.pushCallBack(new HandleCallbackParam(triggerParam.getLogId(), triggerParam.getLogDateTim(), executeResult));
                     } else {
                         // is killed
                         ReturnT<String> stopResult = new ReturnT<String>(ReturnT.FAIL_CODE, stopReason + " [业务运行中,被强制终止]");
-                        TriggerCallbackThread.pushCallBack(new HandleCallbackParam(triggerParam.getLogId(), stopResult));
+                        TriggerCallbackThread.pushCallBack(new HandleCallbackParam(triggerParam.getLogId(), triggerParam.getLogDateTim(), stopResult));
                     }
                 }
             }
@@ -164,7 +163,7 @@ public class JobThread extends Thread{
 			if (triggerParam!=null) {
 				// is killed
 				ReturnT<String> stopResult = new ReturnT<String>(ReturnT.FAIL_CODE, stopReason + " [任务尚未执行,在调度队列中被终止]");
-				TriggerCallbackThread.pushCallBack(new HandleCallbackParam(triggerParam.getLogId(), stopResult));
+				TriggerCallbackThread.pushCallBack(new HandleCallbackParam(triggerParam.getLogId(), triggerParam.getLogDateTim(), stopResult));
 			}
 		}
 

+ 17 - 4
xxl-job-core/src/main/java/com/xxl/job/core/thread/TriggerCallbackThread.java

@@ -4,10 +4,13 @@ import com.xxl.job.core.biz.AdminBiz;
 import com.xxl.job.core.biz.model.HandleCallbackParam;
 import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.executor.XxlJobExecutor;
+import com.xxl.job.core.log.XxlJobFileAppender;
+import com.xxl.job.core.log.XxlJobLogger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.concurrent.LinkedBlockingQueue;
 
@@ -108,17 +111,27 @@ public class TriggerCallbackThread {
             try {
                 ReturnT<String> callbackResult = adminBiz.callback(callbackParamList);
                 if (callbackResult!=null && ReturnT.SUCCESS_CODE == callbackResult.getCode()) {
-                    callbackResult = ReturnT.SUCCESS;
-                    logger.info(">>>>>>>>>>> xxl-job callback success, callbackParamList:{}, callbackResult:{}", new Object[]{callbackParamList, callbackResult});
+                    callbackLog(callbackParamList, "<br>----------- xxl-job callback success");
                     break;
                 } else {
-                    logger.info(">>>>>>>>>>> xxl-job callback fail, callbackParamList:{}, callbackResult:{}", new Object[]{callbackParamList, callbackResult});
+                    callbackLog(callbackParamList, "<br>----------- xxl-job callback fail, callbackResult:" + callbackResult);
                 }
             } catch (Exception e) {
-                logger.error(">>>>>>>>>>> xxl-job callback error, callbackParamList:{}", callbackParamList, e);
+                callbackLog(callbackParamList, "<br>----------- xxl-job callback error, errorMsg:" + e.getMessage());
                 //getInstance().callBackQueue.addAll(callbackParamList);
             }
         }
     }
 
+    /**
+     * callback log
+     */
+    private void callbackLog(List<HandleCallbackParam> callbackParamList, String logContent){
+        for (HandleCallbackParam callbackParam: callbackParamList) {
+            String logFileName = XxlJobFileAppender.makeLogFileName(new Date(callbackParam.getLogDateTim()), callbackParam.getLogId());
+            XxlJobFileAppender.contextHolder.set(logFileName);
+            XxlJobLogger.log(logContent);
+        }
+    }
+
 }