Browse Source

1.修改异常拦截,不再使用Data保存内部错误,转而使用internalMsg保存

dev_shibei_match
wxz 6 years ago
parent
commit
354af4a2f4
  1. 75
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/BaseRequestLogAspect.java
  2. 7
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/RenException.java
  3. 14
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/Result.java
  4. 3
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java
  5. 3
      epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/controller/CustomerController.java

75
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/BaseRequestLogAspect.java

@ -16,6 +16,12 @@ import java.time.LocalDateTime;
/** /**
* 日志切面 * 日志切面
*
* 异常拦截
* 会将错误信息都放到internalMsg中
* 如果是要提示给用户的异常则原样转化为resultreturn
* 如果是内部异常则转化为服务器开小差然后return
*
* @Author wxz * @Author wxz
* @Description * @Description
**/ **/
@ -41,43 +47,66 @@ public abstract class BaseRequestLogAspect {
protected Object proceed(ProceedingJoinPoint point, HttpServletRequest request) throws Throwable { protected Object proceed(ProceedingJoinPoint point, HttpServletRequest request) throws Throwable {
String requestURI = request.getRequestURI(); String requestURI = request.getRequestURI();
long id = Thread.currentThread().getId(); long threadId = Thread.currentThread().getId();
Object result = null; Object result;
Exception exception = null;
LocalDateTime startTime = LocalDateTime.now(); LocalDateTime startTime = LocalDateTime.now();
try { try {
Object[] args = point.getArgs(); Object[] args = point.getArgs();
log.info(">>>>>>>>请求信息>>>>>>>>:线程ID:{},url:{},请求参数:{}", id, requestURI, objectsToString(args)); log.info(">>>>>>>>请求信息>>>>>>>>:线程ID:{},url:{},请求参数:{}", threadId, requestURI, objectsToString(args));
result = point.proceed(); result = point.proceed();
resultInfoLog(threadId, getExecPeriod(startTime), result);
} catch (RenException e) { } catch (RenException e) {
exception = e;
result = handleRenException(e); result = handleRenException(e);
resultErrorLog(threadId, getExecPeriod(startTime), result, e.getMsg(), ExceptionUtils.getErrorStackTrace(e));
} catch (ValidateException e) { } catch (ValidateException e) {
exception = e;
result = handleValidateException(e); result = handleValidateException(e);
resultErrorLog(threadId, getExecPeriod(startTime), result, e.getMsg(), ExceptionUtils.getErrorStackTrace(e));
} catch (DuplicateKeyException e) { } catch (DuplicateKeyException e) {
exception = e;
result = handlerDuplicateKeyException(e); result = handlerDuplicateKeyException(e);
resultErrorLog(threadId, getExecPeriod(startTime), result, e.getMessage(), ExceptionUtils.getErrorStackTrace(e));
} catch (RuntimeException re) { } catch (RuntimeException re) {
exception = re;
result = handlerRuntimeException(re); result = handlerRuntimeException(re);
resultErrorLog(threadId, getExecPeriod(startTime), result, re.getMessage(), ExceptionUtils.getErrorStackTrace(re));
} catch (Exception e) { } catch (Exception e) {
exception = e;
result = handlerException(e); result = handlerException(e);
} finally { resultErrorLog(threadId, getExecPeriod(startTime), result, e.getMessage(), ExceptionUtils.getErrorStackTrace(e));
LocalDateTime endTime = LocalDateTime.now(); }
long execTimeMillis = Duration.between(startTime, endTime).toMillis(); return result;
}
if (exception != null) { /**
log.error("<<<<<<<<异常响应<<<<<<<<:线程ID:{},执行时长:{}ms, 响应数据:{}, 异常信息:{}", * info日志
id, execTimeMillis, result == null ? result : result.toString(), ExceptionUtils.getErrorStackTrace(exception)); * @param threadId
} else { * @param execTimeMillis
* @param result
*/
private void resultInfoLog(Long threadId, Long execTimeMillis, Object result) {
log.info("<<<<<<<<正常响应<<<<<<<<:线程ID:{},执行时长:{}ms, 响应数据:{}", log.info("<<<<<<<<正常响应<<<<<<<<:线程ID:{},执行时长:{}ms, 响应数据:{}",
id, execTimeMillis, result == null ? result : result.toString()); threadId, execTimeMillis, result == null ? result : result.toString());
} }
/**
* 异常信息
* @param threadId
* @param execTimeMillis
* @param result
* @param exceptionMsg
* @param exceptionDetail
*/
private void resultErrorLog(Long threadId, Long execTimeMillis, Object result, String exceptionMsg, String exceptionDetail) {
log.error("<<<<<<<<异常响应<<<<<<<<:线程ID:{},执行时长:{}ms, 响应数据:{}, 异常信息:{}, 堆栈信息:{}",
threadId, execTimeMillis, result == null ? result : result.toString(), exceptionMsg, exceptionDetail);
} }
return result;
/**
* 计算执行周期
* @param startTime
* @return
*/
private Long getExecPeriod(LocalDateTime startTime) {
LocalDateTime endTime = LocalDateTime.now();
return Duration.between(startTime, endTime).toMillis();
} }
/** /**
@ -87,7 +116,7 @@ public abstract class BaseRequestLogAspect {
*/ */
private Result handlerException(Exception e) { private Result handlerException(Exception e) {
Result result=new Result().error(); Result result=new Result().error();
result.setData(e.getMessage()); result.setInternalMsg(e.getMessage());
return result; return result;
} }
@ -105,7 +134,7 @@ public abstract class BaseRequestLogAspect {
*/ */
private Result handlerRuntimeException(RuntimeException ex) { private Result handlerRuntimeException(RuntimeException ex) {
Result result=new Result().error(); Result result=new Result().error();
result.setData(ex.getMessage()); result.setInternalMsg(ex.getMessage());
return result; return result;
} }
@ -128,12 +157,14 @@ public abstract class BaseRequestLogAspect {
*/ */
private Result handleRenException(RenException e) { private Result handleRenException(RenException e) {
if (e.getCode() > 8000) { if (e.getCode() > 8000) {
// 原样返回
Result result=new Result().error(e.getCode()); Result result=new Result().error(e.getCode());
result.setData(e.getMsg()); result.setInternalMsg(e.getMsg());
return result; return result;
} }
// 转化成服务器开小差...
Result result=new Result().error(); Result result=new Result().error();
result.setData(e.getMsg()); result.setInternalMsg(e.getMsg());
//result.setMsg(e.getMsg()); //result.setMsg(e.getMsg());
return result; return result;
} }

7
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/RenException.java

@ -24,11 +24,7 @@ public class RenException extends RuntimeException {
private String msg; private String msg;
public RenException(int code) { public RenException(int code) {
this.code = code; this(code, "");
this.msg = EpmetErrorCode.getMsg(code);
if (StringUtils.isBlank(this.msg)) {
this.msg = MessageUtils.getMessage(code);
}
} }
public RenException(int code, String... params) { public RenException(int code, String... params) {
@ -55,6 +51,7 @@ public class RenException extends RuntimeException {
} }
public RenException(int code, String msg) { public RenException(int code, String msg) {
super(msg);
this.code = code; this.code = code;
if (StringUtils.isBlank(msg)) { if (StringUtils.isBlank(msg)) {
this.msg = EpmetErrorCode.getMsg(code); this.msg = EpmetErrorCode.getMsg(code);

14
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/Result.java

@ -37,6 +37,12 @@ public class Result<T> implements Serializable {
*/ */
@ApiModelProperty(value = "消息内容") @ApiModelProperty(value = "消息内容")
private String msg = "success"; private String msg = "success";
/**
* 内部信息
*/
private String internalMsg;
/** /**
* 响应数据 * 响应数据
*/ */
@ -126,6 +132,14 @@ public class Result<T> implements Serializable {
this.data = data; this.data = data;
} }
public String getInternalMsg() {
return internalMsg;
}
public void setInternalMsg(String internalMsg) {
this.internalMsg = internalMsg;
}
@Override @Override
public String toString() { public String toString() {
return JSON.toJSONString(this); return JSON.toJSONString(this);

3
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/AgencyServiceImpl.java

@ -260,7 +260,8 @@ public class AgencyServiceImpl implements AgencyService {
CustomerAgencyDTO rootAgencyExists = customerAgencyDao.getCustomerRootAgency(form.getCustomerId()); CustomerAgencyDTO rootAgencyExists = customerAgencyDao.getCustomerRootAgency(form.getCustomerId());
if (rootAgencyExists != null) { if (rootAgencyExists != null) {
throw new RenException(EpmetErrorCode.OPER_ADD_CUSTOMER_ROOT_AGENCY_EXISTS.getCode()); throw new RenException(EpmetErrorCode.OPER_ADD_CUSTOMER_ROOT_AGENCY_EXISTS.getCode(),
EpmetErrorCode.OPER_ADD_CUSTOMER_ROOT_AGENCY_EXISTS.getMsg());
} }
CustomerAgencyEntity entity = ConvertUtils.sourceToTarget(form, CustomerAgencyEntity.class); CustomerAgencyEntity entity = ConvertUtils.sourceToTarget(form, CustomerAgencyEntity.class);

3
epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/controller/CustomerController.java

@ -192,8 +192,7 @@ public class CustomerController {
public Result<Map<String, String>> addRootAgency(@RequestBody AddRootAgencyFormDTO form) { public Result<Map<String, String>> addRootAgency(@RequestBody AddRootAgencyFormDTO form) {
Result<Map<String, String>> result = govOrgFeignClient.addRootAgency(form); Result<Map<String, String>> result = govOrgFeignClient.addRootAgency(form);
if (!result.success()) { if (!result.success()) {
throw new RenException(EpmetErrorCode.OPER_ADD_CUSTOMER_ROOT_AGENCY_ERROR.getCode(), throw new RenException(EpmetErrorCode.OPER_ADD_CUSTOMER_ROOT_AGENCY_ERROR.getCode(), result.getInternalMsg());
EpmetErrorCode.OPER_ADD_CUSTOMER_ROOT_AGENCY_ERROR.getMsg().concat(",错误信息:").concat(result.getMsg()));
} }
return result; return result;
} }

Loading…
Cancel
Save