添加异常日志记录
This commit is contained in:
@@ -22,6 +22,7 @@ import xtools.boot.api.model.dto.log.LogTrack;
|
|||||||
import xtools.boot.log.LogBus;
|
import xtools.boot.log.LogBus;
|
||||||
import xtools.boot.log.enums.LogBusBaseType;
|
import xtools.boot.log.enums.LogBusBaseType;
|
||||||
import xtools.boot.log.holder.LogTrackHolder;
|
import xtools.boot.log.holder.LogTrackHolder;
|
||||||
|
import xtools.boot.log.interfaces.LogBusType;
|
||||||
import xtools.core.StringUtils;
|
import xtools.core.StringUtils;
|
||||||
import xtools.core.enums.LogLevel;
|
import xtools.core.enums.LogLevel;
|
||||||
import xtools.core.extend.TemplateUtils;
|
import xtools.core.extend.TemplateUtils;
|
||||||
@@ -59,7 +60,7 @@ public class GlobalControllerExceptionHandler implements BaseParams {
|
|||||||
@ExceptionHandler(MethodArgumentTypeMismatchException.class)
|
@ExceptionHandler(MethodArgumentTypeMismatchException.class)
|
||||||
public Result<Object> handleMethodArgumentTypeMismatchException(MethodArgumentTypeMismatchException e, HttpServletRequest request) {
|
public Result<Object> handleMethodArgumentTypeMismatchException(MethodArgumentTypeMismatchException e, HttpServletRequest request) {
|
||||||
String errMsg = TemplateUtils.format(ARGUMENT_TYPE_MISMATCH_TEMPLATE, e.getPropertyName());
|
String errMsg = TemplateUtils.format(ARGUMENT_TYPE_MISMATCH_TEMPLATE, e.getPropertyName());
|
||||||
logException("参数类型不匹配", errMsg, request, e);
|
debugLog("参数类型不匹配", errMsg, request, e);
|
||||||
return Result.badRequest(errMsg);
|
return Result.badRequest(errMsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -82,7 +83,7 @@ public class GlobalControllerExceptionHandler implements BaseParams {
|
|||||||
validation.getResolvableErrors().forEach(item -> msg.add(paramName + CP_COLON + item.getDefaultMessage()));
|
validation.getResolvableErrors().forEach(item -> msg.add(paramName + CP_COLON + item.getDefaultMessage()));
|
||||||
});
|
});
|
||||||
String errMsg = msg.toString();
|
String errMsg = msg.toString();
|
||||||
logException("参数校验异常", errMsg, request, e);
|
debugLog("参数校验异常", errMsg, request, e);
|
||||||
return Result.badRequest(errMsg);
|
return Result.badRequest(errMsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -104,7 +105,7 @@ public class GlobalControllerExceptionHandler implements BaseParams {
|
|||||||
msg.add(fieldName + CP_COLON + errorMessage);
|
msg.add(fieldName + CP_COLON + errorMessage);
|
||||||
});
|
});
|
||||||
String errMsg = msg.toString();
|
String errMsg = msg.toString();
|
||||||
logException("参数校验异常", errMsg, request, e);
|
debugLog("参数校验异常", errMsg, request, e);
|
||||||
return Result.badRequest(errMsg);
|
return Result.badRequest(errMsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,62 +119,10 @@ public class GlobalControllerExceptionHandler implements BaseParams {
|
|||||||
@ExceptionHandler(HttpMessageNotReadableException.class)
|
@ExceptionHandler(HttpMessageNotReadableException.class)
|
||||||
public Result<Object> handleHttpMessageNotReadableException(HttpMessageNotReadableException e, HttpServletRequest request) {
|
public Result<Object> handleHttpMessageNotReadableException(HttpMessageNotReadableException e, HttpServletRequest request) {
|
||||||
String errMsg = "请求参数格式错误";
|
String errMsg = "请求参数格式错误";
|
||||||
logException(errMsg, e.getMessage(), request, e);
|
debugLog(errMsg, e.getMessage(), request, e);
|
||||||
return Result.badRequest(errMsg);
|
return Result.badRequest(errMsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 请求方法不支持
|
|
||||||
*
|
|
||||||
* @param e 请求方法不支持异常
|
|
||||||
* @param request 请求
|
|
||||||
* @return 错误结果
|
|
||||||
*/
|
|
||||||
@ExceptionHandler(HttpRequestMethodNotSupportedException.class)
|
|
||||||
public Result<Object> handleHttpRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException e, HttpServletRequest request) {
|
|
||||||
logException("请求方法不支持", null, request, e);
|
|
||||||
return new Result<>(ResultType.METHOD_NOT_ALLOWED, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 资源未找到
|
|
||||||
*
|
|
||||||
* @param e 资源未找到异常
|
|
||||||
* @param request 请求
|
|
||||||
* @return 错误结果
|
|
||||||
*/
|
|
||||||
@ExceptionHandler(NoResourceFoundException.class)
|
|
||||||
public Result<Object> handleNoResourceFoundException(NoResourceFoundException e, HttpServletRequest request) {
|
|
||||||
logException("资源未找到", null, request, e);
|
|
||||||
return new Result<>(ResultType.NOT_FOUND, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 客户端提前断开连接
|
|
||||||
*
|
|
||||||
* @param e 客户端提前断开连接异常
|
|
||||||
* @param request 请求
|
|
||||||
*/
|
|
||||||
@ExceptionHandler(ClientAbortException.class)
|
|
||||||
public void handleClientAbortException(ClientAbortException e, HttpServletRequest request) {
|
|
||||||
String title = "客户端提前断开连接";
|
|
||||||
LogBus.init(LogLevel.WARN, LogBusBaseType.HTTP_RESPONSE).print(false).error(e).title(title).save();
|
|
||||||
logException(title, e.getMessage(), request, e);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 认证异常
|
|
||||||
*
|
|
||||||
* @param e 认证异常
|
|
||||||
* @param request 请求
|
|
||||||
* @return 错误结果
|
|
||||||
*/
|
|
||||||
@ExceptionHandler(UnauthorizedError.class)
|
|
||||||
public Result<Object> handleUnauthorizedErrorException(UnauthorizedError e, HttpServletRequest request) {
|
|
||||||
logException("认证异常", e.getMessage(), request, e);
|
|
||||||
return new Result<>(ResultType.UNAUTHORIZED, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 公钥错误
|
* 公钥错误
|
||||||
*
|
*
|
||||||
@@ -183,7 +132,7 @@ public class GlobalControllerExceptionHandler implements BaseParams {
|
|||||||
*/
|
*/
|
||||||
@ExceptionHandler(BizPublicKeyError.class)
|
@ExceptionHandler(BizPublicKeyError.class)
|
||||||
public Result<Object> handleBizPublicKeyErrorException(BizPublicKeyError e, HttpServletRequest request) {
|
public Result<Object> handleBizPublicKeyErrorException(BizPublicKeyError e, HttpServletRequest request) {
|
||||||
logException("公钥错误", e.getMessage(), request, e);
|
debugLog("公钥错误", e.getMessage(), request, e);
|
||||||
return new Result<>(true, e.getCode(), e.getMessage(), null);
|
return new Result<>(true, e.getCode(), e.getMessage(), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -196,7 +145,7 @@ public class GlobalControllerExceptionHandler implements BaseParams {
|
|||||||
*/
|
*/
|
||||||
@ExceptionHandler(BizError.class)
|
@ExceptionHandler(BizError.class)
|
||||||
public Result<Object> handleBizErrorException(BizError e, HttpServletRequest request) {
|
public Result<Object> handleBizErrorException(BizError e, HttpServletRequest request) {
|
||||||
logException("业务异常", e.getMessage(), request, e);
|
debugLog("业务异常", e.getMessage(), request, e);
|
||||||
return new Result<>(true, e.getCode(), e.getMessage(), null);
|
return new Result<>(true, e.getCode(), e.getMessage(), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -209,38 +158,111 @@ public class GlobalControllerExceptionHandler implements BaseParams {
|
|||||||
*/
|
*/
|
||||||
@ExceptionHandler(BizWarning.class)
|
@ExceptionHandler(BizWarning.class)
|
||||||
public Result<Object> handleBizWarningException(BizWarning e, HttpServletRequest request) {
|
public Result<Object> handleBizWarningException(BizWarning e, HttpServletRequest request) {
|
||||||
logException("业务警告", e.getMessage(), request, e);
|
debugLog("业务警告", e.getMessage(), request, e);
|
||||||
return new Result<>(true, e.getCode(), e.getMessage(), null);
|
return new Result<>(true, e.getCode(), e.getMessage(), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 认证异常
|
||||||
|
*
|
||||||
|
* @param e 认证异常
|
||||||
|
* @return 错误结果
|
||||||
|
*/
|
||||||
|
@ExceptionHandler(UnauthorizedError.class)
|
||||||
|
public Result<Object> handleUnauthorizedErrorException(UnauthorizedError e) {
|
||||||
|
errorLog(LogLevel.ERROR, LogBusBaseType.HTTP_REQUEST, "认证异常", e);
|
||||||
|
return new Result<>(ResultType.UNAUTHORIZED, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 请求方法不支持
|
||||||
|
*
|
||||||
|
* @param e 请求方法不支持异常
|
||||||
|
* @return 错误结果
|
||||||
|
*/
|
||||||
|
@ExceptionHandler(HttpRequestMethodNotSupportedException.class)
|
||||||
|
public Result<Object> handleHttpRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException e) {
|
||||||
|
errorLog(LogLevel.WARN, LogBusBaseType.HTTP_REQUEST, "请求方法不支持", e);
|
||||||
|
return new Result<>(ResultType.METHOD_NOT_ALLOWED, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 资源未找到
|
||||||
|
*
|
||||||
|
* @param e 资源未找到异常
|
||||||
|
* @return 错误结果
|
||||||
|
*/
|
||||||
|
@ExceptionHandler(NoResourceFoundException.class)
|
||||||
|
public Result<Object> handleNoResourceFoundException(NoResourceFoundException e) {
|
||||||
|
errorLog(LogLevel.WARN, LogBusBaseType.HTTP_REQUEST, "资源未找到", e, false);
|
||||||
|
return new Result<>(ResultType.NOT_FOUND, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 客户端提前断开连接
|
||||||
|
*
|
||||||
|
* @param e 客户端提前断开连接异常
|
||||||
|
*/
|
||||||
|
@ExceptionHandler(ClientAbortException.class)
|
||||||
|
public void handleClientAbortException(ClientAbortException e) {
|
||||||
|
errorLog(LogLevel.WARN, LogBusBaseType.HTTP_REQUEST, "客户端提前断开连接", e, false);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 默认全局异常处理
|
* 默认全局异常处理
|
||||||
*
|
*
|
||||||
* @param e 异常
|
* @param e 异常
|
||||||
* @param request 请求
|
|
||||||
* @return 错误结果
|
* @return 错误结果
|
||||||
*/
|
*/
|
||||||
@ExceptionHandler(Exception.class)
|
@ExceptionHandler(Exception.class)
|
||||||
public Result<Object> handleException(Exception e, HttpServletRequest request) {
|
public Result<Object> handleException(Exception e) {
|
||||||
logException("默认全局异常处理", null, request, e);
|
errorLog(LogLevel.ERROR, LogBusBaseType.CONTROLLER, "默认全局异常处理", e);
|
||||||
LogTrack logTrack = LogTrackHolder.getDefNull();
|
|
||||||
if (Objects.nonNull(logTrack)) {
|
|
||||||
LogBus.init(LogLevel.ERROR, LogBusBaseType.CONTROLLER, logTrack).title("默认全局异常处理").error(e).save();
|
|
||||||
} else {
|
|
||||||
log.error("默认全局异常处理", e);
|
|
||||||
}
|
|
||||||
return new Result<>(ResultType.INTERNAL_SERVER_ERROR, null);
|
return new Result<>(ResultType.INTERNAL_SERVER_ERROR, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 日志异常
|
* 错误日志
|
||||||
|
*
|
||||||
|
* @param level 日志级别
|
||||||
|
* @param type 异常类型
|
||||||
|
* @param title 标题
|
||||||
|
* @param e 异常
|
||||||
|
*/
|
||||||
|
private void errorLog(LogLevel level, LogBusType type, String title, Exception e) {
|
||||||
|
errorLog(level, type, title, e, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 错误日志
|
||||||
|
*
|
||||||
|
* @param level 日志级别
|
||||||
|
* @param type 异常类型
|
||||||
|
* @param title 标题
|
||||||
|
* @param e 异常
|
||||||
|
* @param print 是否打印
|
||||||
|
*/
|
||||||
|
private void errorLog(LogLevel level, LogBusType type, String title, Exception e, Boolean print) {
|
||||||
|
LogTrack logTrack = LogTrackHolder.getDefNull();
|
||||||
|
if (Objects.nonNull(logTrack)) {
|
||||||
|
LogBus logBus = LogBus.init(level, type, logTrack).title(title).error(e);
|
||||||
|
if (Objects.nonNull(print)) {
|
||||||
|
logBus.print(print);
|
||||||
|
}
|
||||||
|
logBus.save();
|
||||||
|
} else {
|
||||||
|
log.error(title, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 调试日志
|
||||||
*
|
*
|
||||||
* @param type 异常类型
|
* @param type 异常类型
|
||||||
* @param msg 错误消息
|
* @param msg 错误消息
|
||||||
* @param request 请求
|
* @param request 请求
|
||||||
* @param e 异常
|
* @param e 异常
|
||||||
*/
|
*/
|
||||||
private void logException(String type, String msg, HttpServletRequest request, Exception e) {
|
private void debugLog(String type, String msg, HttpServletRequest request, Exception e) {
|
||||||
if (StringUtils.isBlank(msg)) {
|
if (StringUtils.isBlank(msg)) {
|
||||||
log.debug("请求[{}]异常,类型[{}]", request.getRequestURI(), type, e);
|
log.debug("请求[{}]异常,类型[{}]", request.getRequestURI(), type, e);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user