spring异步存储错误信息日志

来源:互联网 发布:大智慧ts诊断主图源码 编辑:程序博客网 时间:2024/05/29 15:23
public class SpException extends Exception{private static final long serialVersionUID = 10086L ;private ErrorCodeEnum errorCode ;public SpException(ErrorCodeEnum e , String message){super(message) ;this.errorCode = e ;}public ErrorCodeEnum getErrorCode() {return errorCode;}public String getStackTraceToString(int size) throws IOException{StringWriter sw = null;    PrintWriter pw = null ;     try {        sw = new StringWriter();        pw =  new PrintWriter(sw);        this.printStackTrace(pw);        pw.flush();        sw.flush();    } finally {        if (sw != null)  sw.close();        if (pw != null)  pw.close();    }    StringBuilder build = new StringBuilder() ;    for(String s : sw.toString().split("\\n")){    if(! StringUtils.isEmpty(s) && size-- > 0) build.append(s + "\n") ;    }    return build.toString() ; }}<task:executor id="sp_writeLog" pool-size="20" queue-capacity="1000" rejection-policy="CALLER_RUNS" />public class SpExceptionResolver{private static final Logger logger = Logger.getLogger(LogAspect.class);@Async("sp_writeLog")public static void resolveException(HttpServletRequest request , Exception e) {if (e instanceof SpException) {String requestPath = request.getRequestURI() ;StringBuilder build = new StringBuilder()  ;build.append("\n" + "Begin:" + "\n" + "Url:" + requestPath + "\n"+ "RequestParams:" + JSONObject.toJSON(request.getParameterMap()) + "\n") ;SpException spE = (SpException) e;build.append("Error Code : " + spE.getErrorCode() + "\n") ;try {build.append(spE.getStackTraceToString(2));}catch (IOException e1) {build.append("系统异常");}logger.error(build.toString()) ;} else {logger.error("系统异常");}}}

0 0
原创粉丝点击