wangwei 7 年之前
父節點
當前提交
24405717bf

+ 18 - 1
examcloud-task-service/src/main/java/cn/com/qmth/examcloud/task/service/DefaultTaskTracker.java

@@ -1,5 +1,8 @@
 package cn.com.qmth.examcloud.task.service;
 
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
 import java.util.Date;
 
 import javax.transaction.Transactional;
@@ -7,6 +10,7 @@ import javax.transaction.Transactional;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import cn.com.qmth.examcloud.commons.base.exception.StatusException;
 import cn.com.qmth.examcloud.task.base.ScheduleJob;
 import cn.com.qmth.examcloud.task.base.TaskTracker;
 import cn.com.qmth.examcloud.task.dao.TaskTraceRepo;
@@ -42,10 +46,23 @@ public class DefaultTaskTracker implements TaskTracker {
 		TaskTraceEntity entity = taskTraceRepo.findByTraceId(traceId);
 		entity.setJobStatus("异常");
 		entity.setEndTime(new Date());
-		entity.setException(e.getCause().getMessage());
+
+		if (e instanceof StatusException) {
+			entity.setException(((StatusException) e).toJson());
+		} else {
+			entity.setException(getStackTrace(e));
+		}
+
 		taskTraceRepo.save(entity);
 	}
 
+	private String getStackTrace(Throwable throwable) {
+		Writer result = new StringWriter();
+		PrintWriter printWriter = new PrintWriter(result);
+		throwable.printStackTrace(printWriter);
+		return result.toString();
+	}
+
 	@Transactional
 	@Override
 	public void onEnd(ScheduleJob scheduleJob, String traceId) {