Appearance
package com.dhcc.common.config;
import com.aoip.common.core.util.R; import com.dhcc.common.exception.CustomerException; import lombok.extern.slf4j.Slf4j; import org.springframework.core.annotation.Order; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest;
/**
- @author LiuZhenJie
- @date 2023/05/30 **/ @ControllerAdvice @RestController @Order(-1) @Slf4j public class GlobalExceptionHandler {
@ExceptionHandler(CustomerException.class) @ResponseStatus(value = HttpStatus.OK) public R<String> handleMethodArgumentNotValidExceptionHandler(HttpServletRequest request, CustomerException ex) { log(request,ex); return R.failed(ex.getMessage()); }
public void log(HttpServletRequest request, Exception exception) { //换行符 String lineSeparatorStr = System.getProperty("line.separator");
StringBuilder exStr = new StringBuilder(); StackTraceElement[] trace = exception.getStackTrace(); // 获取堆栈信息并输出为打印的形式 for (StackTraceElement s : trace) { exStr.append("\tat ").append(s).append("\r\n"); } //打印error级别的堆栈日志 log.error("访问地址:" + request.getRequestURL() + ",请求方法:" + request.getMethod() + ",远程地址:" + request.getRemoteAddr() + lineSeparatorStr + "错误堆栈信息如下:" + exception.toString() + lineSeparatorStr + exStr); } }
