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

This commit is contained in:
xuxueli 2018-05-15 21:36:06 +08:00
parent 5c24778f3d
commit 22da65c215
4 changed files with 35 additions and 10 deletions

View File

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

View File

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

View File

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

View File

@ -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.HandleCallbackParam;
import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.executor.XxlJobExecutor; 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.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.LinkedBlockingQueue;
@ -108,17 +111,27 @@ public class TriggerCallbackThread {
try { try {
ReturnT<String> callbackResult = adminBiz.callback(callbackParamList); ReturnT<String> callbackResult = adminBiz.callback(callbackParamList);
if (callbackResult!=null && ReturnT.SUCCESS_CODE == callbackResult.getCode()) { if (callbackResult!=null && ReturnT.SUCCESS_CODE == callbackResult.getCode()) {
callbackResult = ReturnT.SUCCESS; callbackLog(callbackParamList, "<br>----------- xxl-job callback success");
logger.info(">>>>>>>>>>> xxl-job callback success, callbackParamList:{}, callbackResult:{}", new Object[]{callbackParamList, callbackResult});
break; break;
} else { } 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) { } 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); //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);
}
}
} }