package me.bello.eastline;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.web.servlet.error.ErrorAttributes;
import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.context.request.ServletWebRequest;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
@RestController
public class ExceptionController implements ErrorController {
Logger logger = LoggerFactory.getLogger("ExceptionController");
@Resource
private ErrorAttributes errorAttributes;
@Override
public String getErrorPath() {
return "/error";
}
@GetMapping("/error")
public String error(HttpServletRequest request){
ServletWebRequest servletWebRequest = new ServletWebRequest(request);
Map<String, Object> errorAttributesData = errorAttributes.getErrorAttributes(servletWebRequest, true);
// 状态码
Integer status = (Integer) errorAttributesData.get("status");
// 请求路径
String path = (String) errorAttributesData.get("path");
String messageFound = (String) errorAttributesData.get("message");
// 异常信息
String trace = (String) errorAttributesData.get("trace");
logger.error(status + "\n" + path + "\n" + messageFound + "\n" + trace);
return "error";
}
}