Procházet zdrojové kódy

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

xuxueli před 7 roky
rodič
revize
22da65c215

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

1199
 - 8、Window机器下File.separator不兼容问题修复;
1199
 - 8、Window机器下File.separator不兼容问题修复;
1200
 - 9、任务日志查询速度优化,百万级别日志量搜索速度提升1000倍;
1200
 - 9、任务日志查询速度优化,百万级别日志量搜索速度提升1000倍;
1201
 - 10、底层LocalCache组件兼容性优化,支持jdk、jdk10编译部署;
1201
 - 10、底层LocalCache组件兼容性优化,支持jdk、jdk10编译部署;
1202
-- 11、[迭代中]回调log优化,支持展示在rolling log中,方便排查问题
1202
+- 11、任务回调结果优化,支持展示在Rolling log中,方便问题排查
1203
 - 12、脚本任务异常Log输出优化;
1203
 - 12、脚本任务异常Log输出优化;
1204
 
1204
 
1205
 
1205
 

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

9
     private static final long serialVersionUID = 42L;
9
     private static final long serialVersionUID = 42L;
10
 
10
 
11
     private int logId;
11
     private int logId;
12
+    private long logDateTim;
13
+
12
     private ReturnT<String> executeResult;
14
     private ReturnT<String> executeResult;
13
 
15
 
14
     public HandleCallbackParam(){}
16
     public HandleCallbackParam(){}
15
-    public HandleCallbackParam(int logId, ReturnT<String> executeResult) {
17
+    public HandleCallbackParam(int logId, long logDateTim, ReturnT<String> executeResult) {
16
         this.logId = logId;
18
         this.logId = logId;
19
+        this.logDateTim = logDateTim;
17
         this.executeResult = executeResult;
20
         this.executeResult = executeResult;
18
     }
21
     }
19
 
22
 
25
         this.logId = logId;
28
         this.logId = logId;
26
     }
29
     }
27
 
30
 
31
+    public long getLogDateTim() {
32
+        return logDateTim;
33
+    }
34
+
35
+    public void setLogDateTim(long logDateTim) {
36
+        this.logDateTim = logDateTim;
37
+    }
38
+
28
     public ReturnT<String> getExecuteResult() {
39
     public ReturnT<String> getExecuteResult() {
29
         return executeResult;
40
         return executeResult;
30
     }
41
     }
37
     public String toString() {
48
     public String toString() {
38
         return "HandleCallbackParam{" +
49
         return "HandleCallbackParam{" +
39
                 "logId=" + logId +
50
                 "logId=" + logId +
51
+                ", logDateTim=" + logDateTim +
40
                 ", executeResult=" + executeResult +
52
                 ", executeResult=" + executeResult +
41
                 '}';
53
                 '}';
42
     }
54
     }
55
+
43
 }
56
 }

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

14
 
14
 
15
 import java.io.PrintWriter;
15
 import java.io.PrintWriter;
16
 import java.io.StringWriter;
16
 import java.io.StringWriter;
17
-import java.util.Arrays;
18
 import java.util.Date;
17
 import java.util.Date;
19
 import java.util.concurrent.LinkedBlockingQueue;
18
 import java.util.concurrent.LinkedBlockingQueue;
20
 import java.util.concurrent.TimeUnit;
19
 import java.util.concurrent.TimeUnit;
148
                     // callback handler info
147
                     // callback handler info
149
                     if (!toStop) {
148
                     if (!toStop) {
150
                         // commonm
149
                         // commonm
151
-                        TriggerCallbackThread.pushCallBack(new HandleCallbackParam(triggerParam.getLogId(), executeResult));
150
+                        TriggerCallbackThread.pushCallBack(new HandleCallbackParam(triggerParam.getLogId(), triggerParam.getLogDateTim(), executeResult));
152
                     } else {
151
                     } else {
153
                         // is killed
152
                         // is killed
154
                         ReturnT<String> stopResult = new ReturnT<String>(ReturnT.FAIL_CODE, stopReason + " [业务运行中,被强制终止]");
153
                         ReturnT<String> stopResult = new ReturnT<String>(ReturnT.FAIL_CODE, stopReason + " [业务运行中,被强制终止]");
155
-                        TriggerCallbackThread.pushCallBack(new HandleCallbackParam(triggerParam.getLogId(), stopResult));
154
+                        TriggerCallbackThread.pushCallBack(new HandleCallbackParam(triggerParam.getLogId(), triggerParam.getLogDateTim(), stopResult));
156
                     }
155
                     }
157
                 }
156
                 }
158
             }
157
             }
164
 			if (triggerParam!=null) {
163
 			if (triggerParam!=null) {
165
 				// is killed
164
 				// is killed
166
 				ReturnT<String> stopResult = new ReturnT<String>(ReturnT.FAIL_CODE, stopReason + " [任务尚未执行,在调度队列中被终止]");
165
 				ReturnT<String> stopResult = new ReturnT<String>(ReturnT.FAIL_CODE, stopReason + " [任务尚未执行,在调度队列中被终止]");
167
-				TriggerCallbackThread.pushCallBack(new HandleCallbackParam(triggerParam.getLogId(), stopResult));
166
+				TriggerCallbackThread.pushCallBack(new HandleCallbackParam(triggerParam.getLogId(), triggerParam.getLogDateTim(), stopResult));
168
 			}
167
 			}
169
 		}
168
 		}
170
 
169
 

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

4
 import com.xxl.job.core.biz.model.HandleCallbackParam;
4
 import com.xxl.job.core.biz.model.HandleCallbackParam;
5
 import com.xxl.job.core.biz.model.ReturnT;
5
 import com.xxl.job.core.biz.model.ReturnT;
6
 import com.xxl.job.core.executor.XxlJobExecutor;
6
 import com.xxl.job.core.executor.XxlJobExecutor;
7
+import com.xxl.job.core.log.XxlJobFileAppender;
8
+import com.xxl.job.core.log.XxlJobLogger;
7
 import org.slf4j.Logger;
9
 import org.slf4j.Logger;
8
 import org.slf4j.LoggerFactory;
10
 import org.slf4j.LoggerFactory;
9
 
11
 
10
 import java.util.ArrayList;
12
 import java.util.ArrayList;
13
+import java.util.Date;
11
 import java.util.List;
14
 import java.util.List;
12
 import java.util.concurrent.LinkedBlockingQueue;
15
 import java.util.concurrent.LinkedBlockingQueue;
13
 
16
 
108
             try {
111
             try {
109
                 ReturnT<String> callbackResult = adminBiz.callback(callbackParamList);
112
                 ReturnT<String> callbackResult = adminBiz.callback(callbackParamList);
110
                 if (callbackResult!=null && ReturnT.SUCCESS_CODE == callbackResult.getCode()) {
113
                 if (callbackResult!=null && ReturnT.SUCCESS_CODE == callbackResult.getCode()) {
111
-                    callbackResult = ReturnT.SUCCESS;
112
-                    logger.info(">>>>>>>>>>> xxl-job callback success, callbackParamList:{}, callbackResult:{}", new Object[]{callbackParamList, callbackResult});
114
+                    callbackLog(callbackParamList, "<br>----------- xxl-job callback success");
113
                     break;
115
                     break;
114
                 } else {
116
                 } else {
115
-                    logger.info(">>>>>>>>>>> xxl-job callback fail, callbackParamList:{}, callbackResult:{}", new Object[]{callbackParamList, callbackResult});
117
+                    callbackLog(callbackParamList, "<br>----------- xxl-job callback fail, callbackResult:" + callbackResult);
116
                 }
118
                 }
117
             } catch (Exception e) {
119
             } catch (Exception e) {
118
-                logger.error(">>>>>>>>>>> xxl-job callback error, callbackParamList:{}", callbackParamList, e);
120
+                callbackLog(callbackParamList, "<br>----------- xxl-job callback error, errorMsg:" + e.getMessage());
119
                 //getInstance().callBackQueue.addAll(callbackParamList);
121
                 //getInstance().callBackQueue.addAll(callbackParamList);
120
             }
122
             }
121
         }
123
         }
122
     }
124
     }
123
 
125
 
126
+    /**
127
+     * callback log
128
+     */
129
+    private void callbackLog(List<HandleCallbackParam> callbackParamList, String logContent){
130
+        for (HandleCallbackParam callbackParam: callbackParamList) {
131
+            String logFileName = XxlJobFileAppender.makeLogFileName(new Date(callbackParam.getLogDateTim()), callbackParam.getLogId());
132
+            XxlJobFileAppender.contextHolder.set(logFileName);
133
+            XxlJobLogger.log(logContent);
134
+        }
135
+    }
136
+
124
 }
137
 }