Przeglądaj źródła

任务日志取出slf4j依赖

xueli.xue 8 lat temu
rodzic
commit
7102a9f86d

+ 1 - 1
xxl-job-core/pom.xml Wyświetl plik

@@ -40,7 +40,7 @@
40 40
 		<!-- slf4j -->
41 41
 		<dependency>
42 42
 			<groupId>org.slf4j</groupId>
43
-			<artifactId>slf4j-log4j12</artifactId>
43
+			<artifactId>slf4j-api</artifactId>
44 44
 			<version>1.7.21</version>
45 45
 		</dependency>
46 46
 

+ 4 - 0
xxl-job-core/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java Wyświetl plik

@@ -31,6 +31,7 @@ public class XxlJobExecutor implements ApplicationContextAware, ApplicationListe
31 31
     private int port = 9999;
32 32
     private String appName;
33 33
     private RegistHelper registHelper;
34
+    public static String logPath;
34 35
 
35 36
     public void setIp(String ip) {
36 37
         this.ip = ip;
@@ -44,6 +45,9 @@ public class XxlJobExecutor implements ApplicationContextAware, ApplicationListe
44 45
     public void setRegistHelper(RegistHelper registHelper) {
45 46
         this.registHelper = registHelper;
46 47
     }
48
+    public void setLogPath(String logPath) {
49
+        this.logPath = logPath;
50
+    }
47 51
 
48 52
     // ---------------------------------- job server ------------------------------------
49 53
     private NetComServerFactory serverFactory = new NetComServerFactory();

+ 15 - 0
xxl-job-core/src/main/java/com/xxl/job/core/handler/IJobHandler.java Wyświetl plik

@@ -1,12 +1,27 @@
1 1
 package com.xxl.job.core.handler;
2 2
 
3 3
 import com.xxl.job.core.biz.model.ReturnT;
4
+import com.xxl.job.core.log.XxlJobFileAppender;
5
+import org.slf4j.Logger;
6
+import org.slf4j.LoggerFactory;
4 7
 
5 8
 /**
6 9
  * remote job handler
7 10
  * @author xuxueli 2015-12-19 19:06:38
8 11
  */
9 12
 public abstract class IJobHandler {
13
+	private static Logger logger = LoggerFactory.getLogger(IJobHandler.class);
14
+
15
+	/**
16
+	 * append log
17
+	 *
18
+	 * @param appendLog
19
+	 */
20
+	public void log(String appendLog) {
21
+		String logFileName = XxlJobFileAppender.contextHolder.get();
22
+		XxlJobFileAppender.appendLog(logFileName, appendLog);
23
+		logger.info("xxl-job log [{}]: {}", logFileName, appendLog);
24
+	}
10 25
 	
11 26
 	/**
12 27
 	 * job handler

+ 4 - 3
xxl-job-core/src/main/java/com/xxl/job/core/handler/impl/ScriptJobHandler.java Wyświetl plik

@@ -1,6 +1,7 @@
1 1
 package com.xxl.job.core.handler.impl;
2 2
 
3 3
 import com.xxl.job.core.biz.model.ReturnT;
4
+import com.xxl.job.core.executor.XxlJobExecutor;
4 5
 import com.xxl.job.core.glue.GlueTypeEnum;
5 6
 import com.xxl.job.core.handler.IJobHandler;
6 7
 import com.xxl.job.core.log.XxlJobFileAppender;
@@ -35,17 +36,17 @@ public class ScriptJobHandler extends IJobHandler {
35 36
         String scriptFileName = null;
36 37
         if (GlueTypeEnum.GLUE_SHELL == glueType) {
37 38
             cmd = "bash";
38
-            scriptFileName = XxlJobFileAppender.filePath.concat("gluesource/").concat(String.valueOf(jobId)).concat("_").concat(String.valueOf(glueUpdatetime)).concat(".sh");
39
+            scriptFileName = XxlJobExecutor.logPath.concat("gluesource/").concat(String.valueOf(jobId)).concat("_").concat(String.valueOf(glueUpdatetime)).concat(".sh");
39 40
         } else if (GlueTypeEnum.GLUE_PYTHON == glueType) {
40 41
             cmd = "python";
41
-            scriptFileName = XxlJobFileAppender.filePath.concat("gluesource/").concat(String.valueOf(jobId)).concat("_").concat(String.valueOf(glueUpdatetime)).concat(".py");
42
+            scriptFileName = XxlJobExecutor.logPath.concat("gluesource/").concat(String.valueOf(jobId)).concat("_").concat(String.valueOf(glueUpdatetime)).concat(".py");
42 43
         }
43 44
 
44 45
         // make script file
45 46
         ScriptUtil.markScriptFile(scriptFileName, gluesource);
46 47
 
47 48
         // log file
48
-        String logFileName = XxlJobFileAppender.filePath.concat(XxlJobFileAppender.contextHolder.get());
49
+        String logFileName = XxlJobExecutor.logPath.concat(XxlJobFileAppender.contextHolder.get());
49 50
 
50 51
         // invoke
51 52
         int exitValue = ScriptUtil.execToFile(cmd, scriptFileName, logFileName, params);

+ 30 - 44
xxl-job-core/src/main/java/com/xxl/job/core/log/XxlJobFileAppender.java Wyświetl plik

@@ -1,9 +1,9 @@
1 1
 package com.xxl.job.core.log;
2 2
 
3 3
 import com.xxl.job.core.biz.model.LogResult;
4
-import org.apache.log4j.AppenderSkeleton;
5
-import org.apache.log4j.Layout;
6
-import org.apache.log4j.spi.LoggingEvent;
4
+import com.xxl.job.core.executor.XxlJobExecutor;
5
+import org.slf4j.Logger;
6
+import org.slf4j.LoggerFactory;
7 7
 
8 8
 import java.io.*;
9 9
 import java.text.SimpleDateFormat;
@@ -13,18 +13,13 @@ import java.util.Date;
13 13
  * store trigger log in each log-file
14 14
  * @author xuxueli 2016-3-12 19:25:12
15 15
  */
16
-public class XxlJobFileAppender extends AppenderSkeleton {
16
+public class XxlJobFileAppender {
17
+	private static Logger logger = LoggerFactory.getLogger(XxlJobFileAppender.class);
17 18
 	
18 19
 	// for JobThread
19 20
 	public static ThreadLocal<String> contextHolder = new ThreadLocal<String>();
20 21
 	public static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
21 22
 	
22
-	// trogger log file path
23
-	public static volatile String filePath;
24
-	public void setFilePath(String filePath) {
25
-		XxlJobFileAppender.filePath = filePath;
26
-	}
27
-
28 23
 	/**
29 24
 	 * log filename: yyyy-MM-dd/9999.log
30 25
 	 *
@@ -35,7 +30,7 @@ public class XxlJobFileAppender extends AppenderSkeleton {
35 30
 	public static String makeLogFileName(Date triggerDate, int logId) {
36 31
 
37 32
         // filePath/
38
-        File filePathDir = new File(filePath);
33
+        File filePathDir = new File(XxlJobExecutor.logPath);
39 34
         if (!filePathDir.exists()) {
40 35
             filePathDir.mkdirs();
41 36
         }
@@ -52,20 +47,31 @@ public class XxlJobFileAppender extends AppenderSkeleton {
52 47
 		return logFileName;
53 48
 	}
54 49
 
55
-	@Override
56
-	protected void append(LoggingEvent event) {
50
+	/**
51
+	 * append log
52
+	 *
53
+	 * @param logFileName
54
+	 * @param appendLog
55
+	 */
56
+	public static void appendLog(String logFileName, String appendLog) {
57
+
58
+		// log
59
+		if (appendLog == null) {
60
+			appendLog = "";
61
+		}
62
+		appendLog += "\r\n";
57 63
 
58
-		String logFileName = contextHolder.get();
64
+		// log file
59 65
 		if (logFileName==null || logFileName.trim().length()==0) {
60 66
 			return;
61 67
 		}
62
-		File logFile = new File(filePath, logFileName);
68
+		File logFile = new File(XxlJobExecutor.logPath, logFileName);
63 69
 
64 70
 		if (!logFile.exists()) {
65 71
 			try {
66 72
 				logFile.createNewFile();
67 73
 			} catch (IOException e) {
68
-				e.printStackTrace();
74
+				logger.error(e.getMessage(), e);
69 75
 				return;
70 76
 			}
71 77
 		}
@@ -75,46 +81,26 @@ public class XxlJobFileAppender extends AppenderSkeleton {
75 81
 			FileOutputStream fos = null;
76 82
 			try {
77 83
 				fos = new FileOutputStream(logFile, true);
78
-				fos.write(layout.format(event).getBytes("utf-8"));
79
-				if (layout.ignoresThrowable()) {
80
-					String[] throwableInfo = event.getThrowableStrRep();
81
-					if (throwableInfo != null) {
82
-						for (int i = 0; i < throwableInfo.length; i++) {
83
-							fos.write(throwableInfo[i].getBytes("utf-8"));
84
-							fos.write(Layout.LINE_SEP.getBytes("utf-8"));
85
-						}
86
-					}
87
-				}
84
+				fos.write(appendLog.getBytes("utf-8"));
88 85
 				fos.flush();
89 86
 			} finally {
90 87
 				if (fos != null) {
91 88
 					try {
92 89
 						fos.close();
93 90
 					} catch (IOException e) {
94
-						e.printStackTrace();
91
+						logger.error(e.getMessage(), e);
95 92
 					}
96 93
 				}
97 94
 			} 
98 95
 		} catch (Exception e) {
99
-			e.printStackTrace();
96
+			logger.error(e.getMessage(), e);
100 97
 		}
101 98
 		
102 99
 	}
103 100
 
104
-	@Override
105
-	public void close() {
106
-		// TODO Auto-generated method stub
107
-		
108
-	}
109
-
110
-	@Override
111
-	public boolean requiresLayout() {
112
-		// TODO Auto-generated method stub
113
-		return false;
114
-	}
115
-	
116 101
 	/**
117 102
 	 * support read log-file
103
+	 *
118 104
 	 * @param logFileName
119 105
 	 * @return log content
120 106
 	 */
@@ -124,7 +110,7 @@ public class XxlJobFileAppender extends AppenderSkeleton {
124 110
 		if (logFileName==null || logFileName.trim().length()==0) {
125 111
             return new LogResult(fromLineNum, 0, "readLog fail, logFile not found", true);
126 112
 		}
127
-		File logFile = new File(filePath, logFileName);
113
+		File logFile = new File(XxlJobExecutor.logPath, logFileName);
128 114
 
129 115
 		if (!logFile.exists()) {
130 116
             return new LogResult(fromLineNum, 0, "readLog fail, logFile not exists", true);
@@ -145,13 +131,13 @@ public class XxlJobFileAppender extends AppenderSkeleton {
145 131
 				}
146 132
 			}
147 133
 		} catch (IOException e) {
148
-			e.printStackTrace();
134
+			logger.error(e.getMessage(), e);
149 135
 		} finally {
150 136
 			if (reader != null) {
151 137
 				try {
152 138
 					reader.close();
153 139
 				} catch (IOException e) {
154
-					e.printStackTrace();
140
+					logger.error(e.getMessage(), e);
155 141
 				}
156 142
 			}
157 143
 		}
@@ -195,7 +181,7 @@ public class XxlJobFileAppender extends AppenderSkeleton {
195 181
 					e.printStackTrace();
196 182
 				}
197 183
 			}
198
-		} 
184
+		}
199 185
 		return null;
200 186
 	}
201 187
 

+ 2 - 2
xxl-job-core/src/main/java/com/xxl/job/core/util/ScriptUtil.java Wyświetl plik

@@ -1,6 +1,6 @@
1 1
 package com.xxl.job.core.util;
2 2
 
3
-import com.xxl.job.core.log.XxlJobFileAppender;
3
+import com.xxl.job.core.executor.XxlJobExecutor;
4 4
 import org.apache.commons.exec.CommandLine;
5 5
 import org.apache.commons.exec.DefaultExecutor;
6 6
 import org.apache.commons.exec.PumpStreamHandler;
@@ -28,7 +28,7 @@ public class ScriptUtil {
28 28
      */
29 29
     public static void markScriptFile(String scriptFileName, String content) throws IOException {
30 30
         // filePath/
31
-        File filePathDir = new File(XxlJobFileAppender.filePath);
31
+        File filePathDir = new File(XxlJobExecutor.logPath);
32 32
         if (!filePathDir.exists()) {
33 33
             filePathDir.mkdirs();
34 34
         }

+ 3 - 3
xxl-job-executor-example/src/main/java/com/xxl/job/executor/service/jobhandler/DemoJobHandler.java Wyświetl plik

@@ -24,13 +24,13 @@ import java.util.concurrent.TimeUnit;
24 24
 @Service
25 25
 public class DemoJobHandler extends IJobHandler {
26 26
 	private static transient Logger logger = LoggerFactory.getLogger(DemoJobHandler.class);
27
-	
27
+
28 28
 	@Override
29 29
 	public ReturnT<String> execute(String... params) throws Exception {
30
-		logger.info("XXL-JOB, Hello World.");
30
+		super.log("XXL-JOB, Hello World.");
31 31
 		
32 32
 		for (int i = 0; i < 5; i++) {
33
-			logger.info("beat at:{}", i);
33
+			super.log("beat at:" + i);
34 34
 			TimeUnit.SECONDS.sleep(2);
35 35
 		}
36 36
 		return ReturnT.SUCCESS;

+ 1 - 0
xxl-job-executor-example/src/main/resources/applicationcontext-xxl-job.xml Wyświetl plik

@@ -36,6 +36,7 @@
36 36
                 <property name="dataSource" ref="xxlJobDataSource" />
37 37
             </bean>
38 38
         </property>
39
+		<property name="logPath" value="${xxl.job.executor.logpath}" />
39 40
 	</bean>
40 41
 
41 42
     <!-- ********************************* "XXL-JOB公共数据源" 配置, 仅在启动 "DbRegistHelper" 时才需要, 否则可删除 ********************************* -->

+ 0 - 23
xxl-job-executor-example/src/main/resources/log4j.xml Wyświetl plik

@@ -17,34 +17,11 @@
17 17
             <param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss} xxl-job-executor-example [%c]-[%t]-[%M]-[%L]-[%p] %m%n"/>
18 18
         </layout>
19 19
     </appender>
20
-    
21
-    <appender name="xxl-job" class="com.xxl.job.core.log.XxlJobFileAppender">
22
-        <param name="filePath" value="/data/applogs/xxl-job/jobhandler/"/>
23
-        <!--<param name="append" value="true"/>-->
24
-        <!--<param name="encoding" value="UTF-8"/>-->
25
-        <layout class="org.apache.log4j.PatternLayout">
26
-            <param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss} xxl-job-executor-example [%c]-[%t]-[%M]-[%L]-[%p] %m%n"/>
27
-        </layout>
28
-    </appender>
29
-
30 20
 
31
-    <logger name="com.xxl.job.core" additivity="false">
32
-    	<level value="INFO" />
33
-        <appender-ref ref="CONSOLE" />
34
-        <appender-ref ref="FILE" />
35
-        <appender-ref ref="xxl-job"/>
36
-    </logger>
37
-    <logger name="com.xxl.job.executor.service.jobhandler" additivity="false">
38
-    	<level value="INFO" />
39
-        <appender-ref ref="CONSOLE" />
40
-        <appender-ref ref="FILE" />
41
-        <appender-ref ref="xxl-job"/>
42
-    </logger>
43 21
     <root>
44 22
         <level value="INFO" />
45 23
         <appender-ref ref="CONSOLE" />
46 24
         <appender-ref ref="FILE" />
47
-        <appender-ref ref="xxl-job"/>
48 25
     </root>
49 26
 
50 27
 </log4j:configuration>

+ 2 - 1
xxl-job-executor-example/src/main/resources/xxl-job-executor.properties Wyświetl plik

@@ -7,4 +7,5 @@ xxl.job.db.password=root_pwd
7 7
 ### xxl-job executor address
8 8
 xxl.job.executor.appname=xxl-job-executor-example
9 9
 xxl.job.executor.ip=
10
-xxl.job.executor.port=9999
10
+xxl.job.executor.port=9999
11
+xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler/