parent
c66ba751a7
commit
8b64314d95
@ -0,0 +1,2 @@
|
||||
eclipse.preferences.version=1
|
||||
performed.operation.correct.unbound.jre=1.0
|
@ -0,0 +1,2 @@
|
||||
/com/
|
||||
/dataSystem.properties
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,33 @@
|
||||
package com.base;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* @描述 常量类
|
||||
* @author chen
|
||||
* @date 2016年8月30日
|
||||
* @package com.base
|
||||
*/
|
||||
public class Constant {
|
||||
|
||||
/** 配置文件文件-dataSystem.properties */
|
||||
public static String SYSTEM_PROPERTIES_FIEL_PATH = "/com/base/dataSystem.properties";
|
||||
|
||||
/** 国际话配置文件文件-i18n.properties */
|
||||
public static String I18N_PROPERTIES_FIEL_PATH = "/com/base/i18n.properties";
|
||||
|
||||
/** 记录异常的文件-system_exception.txt-的位置-- */
|
||||
public final static String SYSTEM_EXCEPTION_FILEPATH = "\\log\\system_exception.txt";
|
||||
|
||||
|
||||
/** WritefileThread-线程睡眠时间--3000 */
|
||||
public final static long THREAD_SLEEP_WRITEFILETHREAD = 3000;
|
||||
|
||||
/** 是否将异常写入文件 */
|
||||
public final static String IS_WRITE_LOGFILE = "iswritelogfile";
|
||||
|
||||
/** CustomException记录报异常的对象的对象个数--10 */
|
||||
public final static int CustomException_log_object_size = 10;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,112 @@
|
||||
package com.base;
|
||||
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class CustomException extends Exception {
|
||||
|
||||
/** 自定义异常信息-错误信息 */
|
||||
private String msg;
|
||||
|
||||
/** 操作对象 */
|
||||
private Object[] objArray;
|
||||
|
||||
/** 异常 */
|
||||
private Throwable cause;
|
||||
|
||||
static{
|
||||
// 是否 启动 记录 异常的线程
|
||||
if (Boolean.valueOf(Resource.getProperties().get(Constant.IS_WRITE_LOGFILE))) {
|
||||
//启动 记录 异常的线程
|
||||
WritefileThread wt = new WritefileThread();
|
||||
wt.start();
|
||||
}
|
||||
}
|
||||
|
||||
public CustomException() {
|
||||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
* @功能 将异常记录进文件
|
||||
* @param code 异常编码
|
||||
* @param msg 自定义异常信息
|
||||
* @param e
|
||||
* @param obj
|
||||
*/
|
||||
public CustomException(String code,Exception e,Object... obj) {
|
||||
super(code);
|
||||
StringBuffer sbuf= new StringBuffer();
|
||||
sbuf.append(msg);
|
||||
|
||||
sbuf.append(code);
|
||||
sbuf.append("\r\n");
|
||||
msg = Resource.getProperties().get(code);
|
||||
// 记录自定义的 异常
|
||||
if (null != msg) {
|
||||
sbuf.append(msg);
|
||||
sbuf.append("\r\n");
|
||||
}
|
||||
// 记录原始的异常
|
||||
if (null != e) {
|
||||
StackTraceElement[] array = e.getStackTrace();
|
||||
cause = e.getCause();
|
||||
for (StackTraceElement stackTraceElement : array) {
|
||||
sbuf.append(stackTraceElement.toString());
|
||||
sbuf.append("\r\n");
|
||||
}
|
||||
}
|
||||
//记录 出现异常时 当前的对象
|
||||
if (null != obj) {
|
||||
Object[] array = obj;
|
||||
sbuf.append("Object[] size : ");
|
||||
sbuf.append(array.length);
|
||||
int forSize = 0;
|
||||
if (Constant.CustomException_log_object_size < array.length) {
|
||||
forSize = Constant.CustomException_log_object_size;
|
||||
}
|
||||
else {
|
||||
forSize = array.length;
|
||||
}
|
||||
for (int i = 0; i < forSize; i++) {
|
||||
sbuf.append(array[i]);
|
||||
sbuf.append("\r\n");
|
||||
}
|
||||
sbuf.append("......");
|
||||
sbuf.append("\r\n");
|
||||
}
|
||||
else {
|
||||
sbuf.append("null");
|
||||
sbuf.append("\r\n");
|
||||
}
|
||||
|
||||
sbuf.append("\r\n");
|
||||
// 是否 写入 文件
|
||||
if (Boolean.valueOf(Resource.getProperties().get(Constant.IS_WRITE_LOGFILE))) {
|
||||
WritefileThread.getStrArray().add(sbuf.toString());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @功能 获得msg
|
||||
* @return msg
|
||||
*/
|
||||
public String getMsg() {
|
||||
return msg;
|
||||
}
|
||||
|
||||
/**
|
||||
* @功能 获得objArray
|
||||
* @return objArray
|
||||
*/
|
||||
public Object[] getObjArray() {
|
||||
return objArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* @功能 获得cause
|
||||
* @return cause
|
||||
*/
|
||||
public Throwable getCause() {
|
||||
return cause;
|
||||
}
|
||||
}
|
@ -0,0 +1,68 @@
|
||||
package com.base;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.base.Constant;
|
||||
|
||||
/**
|
||||
* @描述 写入异常--进文件system_exception.txt
|
||||
* @author chen
|
||||
* @date 2016年8月30日
|
||||
* @package com.utils.exception
|
||||
*/
|
||||
public class WritefileThread extends Thread implements Runnable{
|
||||
|
||||
/** 存储异常信息 */
|
||||
private static List<String> strArray = new ArrayList<>();
|
||||
|
||||
/** 是否继续运行 */
|
||||
private static boolean isContinue = true;
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
super.run();
|
||||
while(isContinue){
|
||||
try {
|
||||
Thread.sleep(Constant.THREAD_SLEEP_WRITEFILETHREAD);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
synchronized (strArray) {
|
||||
//同步代码--写入日志
|
||||
String str = array2Str(strArray);
|
||||
//TODO FileOperate.appendWriteFile(str, Constant.SYSTEM_EXCEPTION_FILEPATH);
|
||||
strArray.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @功能 获得strArray
|
||||
* @return strArray
|
||||
*/
|
||||
public static List<String> getStrArray() {
|
||||
return strArray;
|
||||
}
|
||||
|
||||
/**
|
||||
* @功能 设置 isContinue
|
||||
* @param isContinue
|
||||
*/
|
||||
public static void setContinue(boolean isContinue) {
|
||||
WritefileThread.isContinue = isContinue;
|
||||
}
|
||||
|
||||
/**
|
||||
* @功能 list --> String
|
||||
* @param array arrayList
|
||||
* @return String
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
private static String array2Str(List array) {
|
||||
StringBuffer sbuf = new StringBuffer();
|
||||
for (Object object : array) {
|
||||
sbuf.append(object);
|
||||
}
|
||||
return sbuf.toString();
|
||||
}
|
||||
}
|
Loading…
Reference in new issue