package com.river.exception; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ArrayUtils; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletRequest; import java.util.Arrays; /** * @Description: Controller增强,全局异常处理类 * * @Author: jc * @Date: 11:18 2018/7/18 */ @ControllerAdvice @ResponseBody @Slf4j public class GlobalExceptionHandler { @ExceptionHandler(value = Exception.class) public String allExceptionHandler(HttpServletRequest request, Exception exception) throws Exception { StringBuilder sb = new StringBuilder("\n{"); request.getParameterMap().entrySet().forEach(e -> { sb.append("\"" + e.getKey() + "\"" + ":"); if (ArrayUtils.isEmpty(e.getValue())) { sb.append("null"); } else if (e.getValue().length == 1) { sb.append("\"" + Arrays.stream(e.getValue()).findFirst().get() + "\""); } else if (e.getValue().length > 1) { sb.append("[" + Arrays.stream(e.getValue()).reduce((p1, p2) -> "\"" + p1 + "\",\"" + p2 + "\"").get() + "]"); } sb.append(","); }); String params = sb.substring(0, sb.length() - 1) + "}"; log.info("\n{\n \"RequestUrl\":\"" + request.getServletPath() + "\",\n \"RequestParams\": " + params + ",\n \"ExceptionDetail\":\"" + exception.getMessage() + "\"\n}"); exception.printStackTrace(); return "服务器异常,请联系管理员!"; } }
转载于:https://my.oschina.net/JackieRiver/blog/1858650