parent
ee9eca0db7
commit
3a4df20e73
@ -0,0 +1,7 @@
|
|||||||
|
<body style="color:white;background-color:black;" >
|
||||||
|
<pre>
|
||||||
|
<br>
|
||||||
|
<#if result.code == 200>${result.content}
|
||||||
|
<#else>${result.msg}</#if>
|
||||||
|
</pre>
|
||||||
|
</body>
|
@ -1,10 +0,0 @@
|
|||||||
log4j.rootLogger=info,console
|
|
||||||
|
|
||||||
log4j.appender.console=org.apache.log4j.ConsoleAppender
|
|
||||||
log4j.appender.console.layout=org.apache.log4j.PatternLayout
|
|
||||||
log4j.appender.console.layout.ConversionPattern=%d - xxl-job-client-demo - %p [%c] - <%m>%n
|
|
||||||
|
|
||||||
log4j.appender.logFile=org.apache.log4j.DailyRollingFileAppender
|
|
||||||
log4j.appender.logFile.File=${catalina.base}/logs/xxl-job-client-demo.log
|
|
||||||
log4j.appender.logFile.layout=org.apache.log4j.PatternLayout
|
|
||||||
log4j.appender.logFile.layout.ConversionPattern=%d - xxl-job-client-demo - %p [%c] - <%m>%n
|
|
@ -0,0 +1,41 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd">
|
||||||
|
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" threshold="null" debug="null">
|
||||||
|
|
||||||
|
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
|
||||||
|
<param name="Target" value="System.out" />
|
||||||
|
<layout class="org.apache.log4j.PatternLayout">
|
||||||
|
<param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%t]-[%M]-[%L]-[%p] %m%n" />
|
||||||
|
</layout>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<appender name="ROOT" class="org.apache.log4j.DailyRollingFileAppender">
|
||||||
|
<param name="file" value="/logs/xxl-job-client-demo.log"/>
|
||||||
|
<param name="append" value="true"/>
|
||||||
|
<param name="encoding" value="UTF-8"/>
|
||||||
|
<layout class="org.apache.log4j.PatternLayout">
|
||||||
|
<param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%t]-[%M]-[%L]-[%p] %m%n"/>
|
||||||
|
</layout>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<appender name="xxl-job" class="com.xxl.job.client.log.XxlJobFileAppender">
|
||||||
|
<param name="filePath" value="/logs/xxl-job/"/>
|
||||||
|
<param name="append" value="true"/>
|
||||||
|
<param name="encoding" value="UTF-8"/>
|
||||||
|
<layout class="org.apache.log4j.PatternLayout">
|
||||||
|
<param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%t]-[%M]-[%L]-[%p] %m%n"/>
|
||||||
|
</layout>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<logger name="com.xxl.job.service.handler" additivity="false">
|
||||||
|
<level value="INFO" />
|
||||||
|
<appender-ref ref="xxl-job"/>
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
<root>
|
||||||
|
<level value="INFO" />
|
||||||
|
<appender-ref ref="CONSOLE" />
|
||||||
|
<appender-ref ref="ROOT" />
|
||||||
|
</root>
|
||||||
|
|
||||||
|
</log4j:configuration>
|
@ -0,0 +1,180 @@
|
|||||||
|
package com.xxl.job.client.log;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import org.apache.log4j.AppenderSkeleton;
|
||||||
|
import org.apache.log4j.Layout;
|
||||||
|
import org.apache.log4j.spi.LoggingEvent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* store trigger log in each log-file
|
||||||
|
* @author xuxueli 2016-3-12 19:25:12
|
||||||
|
*/
|
||||||
|
public class XxlJobFileAppender extends AppenderSkeleton {
|
||||||
|
|
||||||
|
// for HandlerThread
|
||||||
|
public static ThreadLocal<String> contextHolder = new ThreadLocal<String>();
|
||||||
|
public static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
|
|
||||||
|
// trogger log file path
|
||||||
|
public static volatile String filePath;
|
||||||
|
public void setFilePath(String filePath) {
|
||||||
|
XxlJobFileAppender.filePath = filePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void append(LoggingEvent event) {
|
||||||
|
String trigger_log_id = contextHolder.get();
|
||||||
|
if (trigger_log_id==null || trigger_log_id.trim().length()==0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// filePath/
|
||||||
|
File filePathDir = new File(filePath);
|
||||||
|
if (!filePathDir.exists()) {
|
||||||
|
filePathDir.mkdirs();
|
||||||
|
}
|
||||||
|
|
||||||
|
// filePath/yyyy-MM-dd/
|
||||||
|
String nowFormat = sdf.format(new Date());
|
||||||
|
File filePathDateDir = new File(filePathDir, nowFormat);
|
||||||
|
if (!filePathDateDir.exists()) {
|
||||||
|
filePathDateDir.mkdirs();
|
||||||
|
}
|
||||||
|
|
||||||
|
// filePath/yyyy-MM-dd/9999.log
|
||||||
|
String logFileName = trigger_log_id.concat(".log");
|
||||||
|
File logFile = new File(filePathDateDir, logFileName);
|
||||||
|
if (!logFile.exists()) {
|
||||||
|
try {
|
||||||
|
logFile.createNewFile();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// append file content
|
||||||
|
try {
|
||||||
|
FileOutputStream fos = null;
|
||||||
|
try {
|
||||||
|
fos = new FileOutputStream(logFile, true);
|
||||||
|
fos.write(layout.format(event).getBytes("utf-8"));
|
||||||
|
if (layout.ignoresThrowable()) {
|
||||||
|
String[] throwableInfo = event.getThrowableStrRep();
|
||||||
|
if (throwableInfo != null) {
|
||||||
|
for (int i = 0; i < throwableInfo.length; i++) {
|
||||||
|
fos.write(throwableInfo[i].getBytes("utf-8"));
|
||||||
|
fos.write(Layout.LINE_SEP.getBytes("utf-8"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fos.flush();
|
||||||
|
} finally {
|
||||||
|
if (fos != null) {
|
||||||
|
try {
|
||||||
|
fos.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void close() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean requiresLayout() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* support read log-file
|
||||||
|
* @param triggerDate
|
||||||
|
* @param trigger_log_id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String readLog(Date triggerDate, String trigger_log_id ){
|
||||||
|
if (triggerDate==null || trigger_log_id==null || trigger_log_id.trim().length()==0) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// filePath/
|
||||||
|
File filePathDir = new File(filePath);
|
||||||
|
if (!filePathDir.exists()) {
|
||||||
|
filePathDir.mkdirs();
|
||||||
|
}
|
||||||
|
|
||||||
|
// filePath/yyyy-MM-dd/
|
||||||
|
String nowFormat = sdf.format(triggerDate);
|
||||||
|
File filePathDateDir = new File(filePathDir, nowFormat);
|
||||||
|
if (!filePathDateDir.exists()) {
|
||||||
|
filePathDateDir.mkdirs();
|
||||||
|
}
|
||||||
|
|
||||||
|
// filePath/yyyy-MM-dd/9999.log
|
||||||
|
String logFileName = trigger_log_id.concat(".log");
|
||||||
|
File logFile = new File(filePathDateDir, logFileName);
|
||||||
|
if (!logFile.exists()) {
|
||||||
|
try {
|
||||||
|
logFile.createNewFile();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
InputStream ins = null;
|
||||||
|
BufferedReader reader = null;
|
||||||
|
try {
|
||||||
|
ins = new FileInputStream(logFile);
|
||||||
|
reader = new BufferedReader(new InputStreamReader(ins, "utf-8"));
|
||||||
|
if (reader != null) {
|
||||||
|
String content = null;
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
while ((content = reader.readLine()) != null) {
|
||||||
|
sb.append(content).append("\n");
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
if (ins != null) {
|
||||||
|
try {
|
||||||
|
ins.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (reader != null) {
|
||||||
|
try {
|
||||||
|
reader.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in new issue