|
@@ -23,7 +23,11 @@ import org.springframework.web.bind.annotation.ExceptionHandler;
|
|
|
import javax.crypto.Mac;
|
|
|
import javax.crypto.spec.SecretKeySpec;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
+import java.io.BufferedReader;
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.InputStreamReader;
|
|
|
import java.net.URLEncoder;
|
|
|
+import java.util.Enumeration;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.Map;
|
|
|
import java.util.Optional;
|
|
@@ -32,7 +36,7 @@ import java.util.stream.Collectors;
|
|
|
@ControllerAdvice
|
|
|
public class BaseController {
|
|
|
|
|
|
- private final static Logger logger = LoggerFactory.getLogger(BaseController.class);
|
|
|
+ private final static Logger businessLogger = LoggerFactory.getLogger(BaseController.class);
|
|
|
|
|
|
public static <T> HttpResponseResult<T> succeed(T object) {
|
|
|
return getResponseData(true, HttpStatus.OK, object, "");
|
|
@@ -97,7 +101,7 @@ public class BaseController {
|
|
|
if (e == null) {
|
|
|
e = ex;
|
|
|
}
|
|
|
- logger.error("System Error", e);
|
|
|
+ businessLogger.error("System Error", e);
|
|
|
// return failed(e.getMessage());
|
|
|
if (e instanceof BizException || e instanceof ThirdpartyException) {
|
|
|
if(e.getMessage().equals("205")){
|
|
@@ -126,6 +130,7 @@ public class BaseController {
|
|
|
.collect(Collectors.joining());
|
|
|
return failed(errorMsg);
|
|
|
}
|
|
|
+ printErrorRequestLog(request);
|
|
|
try {
|
|
|
Map<String,Object> paramMap = new HashMap<>(2);
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
@@ -136,7 +141,7 @@ public class BaseController {
|
|
|
headers.put("Content-Type","application/json");
|
|
|
HttpUtil.postForHttps(dingTalkRobotsSecurityParam(),JSON.toJSONString(paramMap),headers);
|
|
|
}catch (Exception exception){
|
|
|
- logger.error("System Error", exception);
|
|
|
+ businessLogger.error("System Error", exception);
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(e.getMessage())) {
|
|
|
return failed(e.getMessage());
|
|
@@ -144,6 +149,59 @@ public class BaseController {
|
|
|
return failed("系统繁忙");
|
|
|
}
|
|
|
|
|
|
+ private void printErrorRequestLog(HttpServletRequest request){
|
|
|
+ // 打印请求日志或执行其他逻辑
|
|
|
+ businessLogger.info("Request URI: {}", request.getRequestURI());
|
|
|
+ Map<String, String> requestParams = getRequestParameters(request);
|
|
|
+ if (!requestParams.isEmpty()) {
|
|
|
+ businessLogger.info("Request Parameters: {}", requestParams);
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, String> requestHeaders = getRequestHeaders(request);
|
|
|
+ if (!requestHeaders.isEmpty()) {
|
|
|
+ businessLogger.info("Request Headers: {}", requestHeaders);
|
|
|
+ }
|
|
|
+
|
|
|
+ String requestBody = getRequestBody(request);
|
|
|
+ if (!requestBody.isEmpty()) {
|
|
|
+ businessLogger.info("Request JSON: {}", requestBody);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private Map<String, String> getRequestParameters(HttpServletRequest request) {
|
|
|
+ Map<String, String> params = new HashMap<>();
|
|
|
+ request.getParameterMap().forEach((name, values) -> {
|
|
|
+ if (values.length > 0) {
|
|
|
+ params.put(name, values[0]);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return params;
|
|
|
+ }
|
|
|
+
|
|
|
+ private Map<String, String> getRequestHeaders(HttpServletRequest request) {
|
|
|
+ Enumeration<String> headerNames = request.getHeaderNames();
|
|
|
+ Map<String, String> headers = new HashMap<>();
|
|
|
+ while (headerNames.hasMoreElements()) {
|
|
|
+ String headerName = headerNames.nextElement();
|
|
|
+ String headerValue = request.getHeader(headerName);
|
|
|
+ headers.put(headerName, headerValue);
|
|
|
+ }
|
|
|
+ return headers;
|
|
|
+ }
|
|
|
+
|
|
|
+ private String getRequestBody(HttpServletRequest request) {
|
|
|
+ StringBuilder requestBody = new StringBuilder();
|
|
|
+ try (BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream()))) {
|
|
|
+ String line;
|
|
|
+ while ((line = reader.readLine()) != null) {
|
|
|
+ requestBody.append(line);
|
|
|
+ }
|
|
|
+ } catch (IOException e) {
|
|
|
+ businessLogger.error("Error reading request body: {}", e.getMessage());
|
|
|
+ }
|
|
|
+ return requestBody.toString();
|
|
|
+ }
|
|
|
+
|
|
|
public String dingTalkRobotsSecurityParam() throws Exception{
|
|
|
Long timestamp = System.currentTimeMillis();
|
|
|
String secret = "SEC405b2e5f38aaae6472b242ee53607fb4a6549cf05a72bdf6482ec3799d5576ec";
|