Jelajahi Sumber

ResponseStatusException +

MOKASZ\lw12420 1 tahun lalu
induk
melakukan
d7b8e9a6e6

+ 25 - 1
launch-admin/src/main/java/com/webflux/launchadmin/global/GlobalExceptionHandler.java

@@ -17,6 +17,7 @@ import org.springframework.web.multipart.MaxUploadSizeExceededException;
 import org.springframework.web.reactive.resource.NoResourceFoundException;
 import org.springframework.web.server.MethodNotAllowedException;
 import org.springframework.web.server.MissingRequestValueException;
+import org.springframework.web.server.ResponseStatusException;
 import org.springframework.web.server.ServerWebExchange;
 import reactor.core.publisher.Mono;
 
@@ -68,7 +69,30 @@ public class GlobalExceptionHandler {
         log.warn("接口异常 uri = {} e = {}", exchange.getRequest().getPath().value(), LogExceptionStackTrace.erroStackTrace(e));
         return RW.fail(e.getMessage(), Mono.just(e.getMessage()));
     }
-
+    @ExceptionHandler(ResponseStatusException.class)
+    public Mono<RW<Object>> handleResponseStatusException(ServerWebExchange exchange, AccountExpiredException e) {
+        String clientIP=null ;
+        if ( Objects.nonNull(exchange.getRequest().getRemoteAddress())) {
+            if(Objects.nonNull(exchange.getRequest().getRemoteAddress().getAddress())){
+                clientIP = exchange.getRequest().getRemoteAddress().getAddress().getHostAddress();
+            }
+        }
+        long l = System.currentTimeMillis();
+        Mono<MultiValueMap<String, String>> formData = exchange.getFormData();
+        formData.subscribe(data -> {
+            log.error("接口异常 id:{} uri = {} body = {} ",l,exchange.getRequest().getPath().value(),data);
+        });
+        String hostName=null;
+        exchange.getRequest().getHeaders();
+        if(Objects.nonNull(exchange.getRequest().getHeaders().getHost())){
+             hostName = exchange.getRequest().getHeaders().getHost().getHostName();
+        }
+        String referer = exchange.getRequest().getHeaders().getFirst("Referer");
+        String origin = exchange.getRequest().getHeaders().getFirst("Origin");
+        log.error("接口异常 id:{} uri = {} e = {} ip:{} 主机名:{} Referer:{} origin:{}",
+                l, exchange.getRequest().getPath().value(), LogExceptionStackTrace.erroStackTrace(e),clientIP,hostName,referer,origin);
+        return RW.fail(e.getMessage(), Mono.just(e.getMessage()));
+    }
     @ExceptionHandler(DataAccessException.class)
     public Mono<RW<Object>> handleDataAccessException(ServerWebExchange exchange, DataAccessException e) {
         log.error("接口异常 uri = {} e = {}", exchange.getRequest().getPath().value(), LogExceptionStackTrace.erroStackTrace(e));