xueli.xue 8 лет назад
Родитель
Сommit
466b4e868a

+ 2 - 4
xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl

@@ -173,9 +173,7 @@
 <textarea class="glueSource_java" style="display:none;" >
 package com.xxl.job.service.handler;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
+import com.xxl.job.core.log.XxlJobLogger;
 import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.handler.IJobHandler;
 
@@ -184,7 +182,7 @@ public class DemoGlueJobHandler extends IJobHandler {
 
 	@Override
 	public ReturnT<String> execute(String... params) throws Exception {
-		logger.info("XXL-JOB, Hello World.");
+		XxlJobLogger.log("XXL-JOB, Hello World.");
 		return ReturnT.SUCCESS;
 	}
 

+ 0 - 15
xxl-job-core/src/main/java/com/xxl/job/core/handler/IJobHandler.java

@@ -1,28 +1,13 @@
 package com.xxl.job.core.handler;
 
 import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.log.XxlJobFileAppender;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * remote job handler
  * @author xuxueli 2015-12-19 19:06:38
  */
 public abstract class IJobHandler {
-	private static Logger logger = LoggerFactory.getLogger(IJobHandler.class);
 
-	/**
-	 * append log
-	 *
-	 * @param appendLog
-	 */
-	public void log(String appendLog) {
-		String logFileName = XxlJobFileAppender.contextHolder.get();
-		XxlJobFileAppender.appendLog(logFileName, appendLog);
-		logger.info("xxl-job log [{}]: {}", logFileName, appendLog);
-	}
-	
 	/**
 	 * job handler
 	 * @param params

+ 2 - 4
xxl-job-core/src/main/java/com/xxl/job/core/handler/impl/GlueJobHandler.java

@@ -2,15 +2,13 @@ package com.xxl.job.core.handler.impl;
 
 import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.handler.IJobHandler;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import com.xxl.job.core.log.XxlJobLogger;
 
 /**
  * glue job handler
  * @author xuxueli 2016-5-19 21:05:45
  */
 public class GlueJobHandler extends IJobHandler {
-	private static Logger logger = LoggerFactory.getLogger(GlueJobHandler.class);
 
 	private long glueUpdatetime;
 	private IJobHandler jobHandler;
@@ -24,7 +22,7 @@ public class GlueJobHandler extends IJobHandler {
 
 	@Override
 	public ReturnT<String> execute(String... params) throws Exception {
-		logger.info("----------- glue.version:{} -----------", glueUpdatetime);
+		XxlJobLogger.log("----------- glue.version:{} -----------" + glueUpdatetime);
 		return jobHandler.execute(params);
 	}
 

+ 43 - 0
xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobLogger.java

@@ -0,0 +1,43 @@
+package com.xxl.job.core.log;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * Created by xuxueli on 17/4/28.
+ */
+public class XxlJobLogger {
+    private static Logger logger = LoggerFactory.getLogger("xxl-job logger");
+    private static SimpleDateFormat xxlJobLoggerFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+    /**
+     * append log
+     *
+     * @param appendLog
+     */
+    public static void log(String appendLog) {
+
+        // "yyyy-MM-dd HH:mm:ss [ClassName]-[MethodName]-[LineNumber]-[ThreadName] log";
+        StackTraceElement[] stackTraceElements = new Throwable().getStackTrace();
+        StackTraceElement callInfo = stackTraceElements[1];
+
+        StringBuffer stringBuffer = new StringBuffer();
+        stringBuffer.append(xxlJobLoggerFormat.format(new Date())).append(" ")
+            .append("["+ callInfo.getClassName() +"]").append("-")
+            .append("["+ callInfo.getMethodName() +"]").append("-")
+            .append("["+ callInfo.getLineNumber() +"]").append("-")
+            .append("["+ Thread.currentThread().getName() +"]").append(" ")
+            .append(appendLog!=null?appendLog:"");
+        String formatAppendLog = stringBuffer.toString();
+
+        // appendlog
+        String logFileName = XxlJobFileAppender.contextHolder.get();
+        XxlJobFileAppender.appendLog(logFileName, formatAppendLog);
+
+        logger.warn("[{}]: {}", logFileName, formatAppendLog);
+    }
+
+}

+ 15 - 6
xxl-job-core/src/main/java/com/xxl/job/core/thread/JobThread.java

@@ -5,6 +5,7 @@ import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.biz.model.TriggerParam;
 import com.xxl.job.core.handler.IJobHandler;
 import com.xxl.job.core.log.XxlJobFileAppender;
+import com.xxl.job.core.log.XxlJobLogger;
 import org.eclipse.jetty.util.ConcurrentHashSet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -80,7 +81,7 @@ public class JobThread extends Thread{
 						String logFileName = XxlJobFileAppender.makeLogFileName(new Date(triggerParam.getLogDateTim()), triggerParam.getLogId());
 
 						XxlJobFileAppender.contextHolder.set(logFileName);
-						logger.info("----------- xxl-job job execute start -----------");
+						XxlJobLogger.log("----------- xxl-job job execute start -----------");
 
 						executeResult = handler.execute(handlerParams);
 						if (executeResult == null) {
@@ -88,7 +89,7 @@ public class JobThread extends Thread{
 						}
 					} catch (Exception e) {
 						if (toStop) {
-							logger.error("<br>----------- xxl-job toStop, stopReason:{}", stopReason);
+							XxlJobLogger.log("<br>----------- xxl-job toStop, stopReason:" + stopReason);
 						}
 						logger.error("JobThread Exception:", e);
 						StringWriter out = new StringWriter();
@@ -96,8 +97,9 @@ public class JobThread extends Thread{
 
 						executeResult = new ReturnT<String>(ReturnT.FAIL_CODE, out.toString());
 					}
-					logger.info("----------- xxl-job job execute end ----------- <br> Look : ExecutorParams:{}, Code:{}, Msg:{}",
-							new Object[]{handlerParams, executeResult.getCode(), executeResult.getMsg()});
+
+					XxlJobLogger.log("----------- xxl-job job execute end ----------- <br> " +
+									"Look : ExecutorParams:"+ handlerParams +", Code:"+ executeResult.getCode() +", Msg:" + executeResult.getMsg());
 					
 					// callback handler info
 					if (!toStop) {
@@ -111,9 +113,16 @@ public class JobThread extends Thread{
 				}
 			} catch (Exception e) {
 				if (toStop) {
-					logger.error("<br>----------- xxl-job toStop, stopReason:{}", stopReason);
+					XxlJobLogger.log("<br>----------- xxl-job toStop, stopReason:" + stopReason);
 				}
-				logger.error("----------- xxl-job JobThread Exception:", e);
+
+				StringWriter stringWriter = new StringWriter();
+				PrintWriter printWriter = new PrintWriter(stringWriter, true);
+				e.printStackTrace(printWriter);
+				printWriter.flush();
+				stringWriter.flush();
+				String errorMsg = stringWriter.toString();
+				XxlJobLogger.log("----------- xxl-job JobThread Exception:" + errorMsg);
 			}
 		}
 		

+ 4 - 5
xxl-job-executor-example/src/main/java/com/xxl/job/executor/service/jobhandler/DemoJobHandler.java

@@ -3,8 +3,7 @@ package com.xxl.job.executor.service.jobhandler;
 import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.handler.IJobHandler;
 import com.xxl.job.core.handler.annotation.JobHander;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import com.xxl.job.core.log.XxlJobLogger;
 import org.springframework.stereotype.Service;
 
 import java.util.concurrent.TimeUnit;
@@ -17,20 +16,20 @@ import java.util.concurrent.TimeUnit;
  * 1、继承 “IJobHandler” ;
  * 2、装配到Spring,例如加 “@Service” 注解;
  * 3、加 “@JobHander” 注解,注解value值为新增任务生成的JobKey的值;多个JobKey用逗号分割;
+ * 4、执行日志:需要通过 "XxlJobLogger.log" 打印执行日志;
  * 
  * @author xuxueli 2015-12-19 19:43:36
  */
 @JobHander(value="demoJobHandler")
 @Service
 public class DemoJobHandler extends IJobHandler {
-	private static transient Logger logger = LoggerFactory.getLogger(DemoJobHandler.class);
 
 	@Override
 	public ReturnT<String> execute(String... params) throws Exception {
-		super.log("XXL-JOB, Hello World.");
+		XxlJobLogger.log("XXL-JOB, Hello World.");
 		
 		for (int i = 0; i < 5; i++) {
-			super.log("beat at:" + i);
+			XxlJobLogger.log("beat at:" + i);
 			TimeUnit.SECONDS.sleep(2);
 		}
 		return ReturnT.SUCCESS;