From 6dfa45b549b058af22a6b89f2003cfde176ed4f4 Mon Sep 17 00:00:00 2001 From: zzs Date: Thu, 31 Oct 2024 11:39:20 +0800 Subject: [PATCH] fix:gateway ready --- .../conf/CorsResponseHeaderFilter.java | 1 - .../conf/GlobalResponseLogFilter.java | 74 ------------------ .../ensigngateway/conf/RequestLogFilter.java | 76 ------------------- .../src/main/resources/application.yml | 15 ++-- .../src/main/resources/application-local.yaml | 2 +- 5 files changed, 11 insertions(+), 157 deletions(-) delete mode 100644 ensign-gateway/src/main/java/com/ensign/ensigngateway/conf/GlobalResponseLogFilter.java delete mode 100644 ensign-gateway/src/main/java/com/ensign/ensigngateway/conf/RequestLogFilter.java diff --git a/ensign-gateway/src/main/java/com/ensign/ensigngateway/conf/CorsResponseHeaderFilter.java b/ensign-gateway/src/main/java/com/ensign/ensigngateway/conf/CorsResponseHeaderFilter.java index d8d16a1..886221c 100644 --- a/ensign-gateway/src/main/java/com/ensign/ensigngateway/conf/CorsResponseHeaderFilter.java +++ b/ensign-gateway/src/main/java/com/ensign/ensigngateway/conf/CorsResponseHeaderFilter.java @@ -36,7 +36,6 @@ public class CorsResponseHeaderFilter implements GlobalFilter, Ordered { } @Override - @SuppressWarnings("serial") public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { return chain.filter(exchange).then(Mono.fromRunnable(() -> { exchange.getResponse().getHeaders().entrySet().stream() diff --git a/ensign-gateway/src/main/java/com/ensign/ensigngateway/conf/GlobalResponseLogFilter.java b/ensign-gateway/src/main/java/com/ensign/ensigngateway/conf/GlobalResponseLogFilter.java deleted file mode 100644 index 2b25e69..0000000 --- a/ensign-gateway/src/main/java/com/ensign/ensigngateway/conf/GlobalResponseLogFilter.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.ensign.ensigngateway.conf; - -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.cloud.gateway.filter.GatewayFilterChain; -import org.springframework.cloud.gateway.filter.GlobalFilter; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.Ordered; -import org.springframework.http.HttpHeaders; -import org.springframework.http.server.reactive.ServerHttpRequest; -import org.springframework.http.server.reactive.ServerHttpResponse; -import org.springframework.util.MultiValueMap; -import org.springframework.web.server.ServerWebExchange; -import org.springframework.web.util.UriComponentsBuilder; -import reactor.core.publisher.Mono; - -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; - -/** - * @Description: TODO - * @Date: 2024/10/30 9:34 - * @Created: by ZZSLL - */ - -@Slf4j -@Configuration -public class GlobalResponseLogFilter implements GlobalFilter, Ordered { - - @Override - public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { - ServerHttpRequest request = exchange.getRequest(); - // 打印请求路径 - String path = request.getPath().pathWithinApplication().value(); - return chain.filter(exchange).then( - Mono.fromRunnable(() -> { - MultiValueMap queryParams = request.getQueryParams(); - String requestUrl = UriComponentsBuilder.fromPath(path).queryParams(queryParams).build().toUriString(); - - // 构建成一条长日志 - StringBuilder responseLog = new StringBuilder(200); - // 日志参数 - List responseArgs = new ArrayList<>(); - responseLog.append("\n\n================ Gateway Response Start ================\n"); - ServerHttpResponse response = exchange.getResponse(); - // 状态码个path占位符: 200 get: /xxx/xxx/xxx?a=b - responseLog.append("<=== {} {}: {}\n"); - // 参数 - String requestMethod = request.getMethod().toString(); - responseArgs.add(Objects.requireNonNull(response.getStatusCode()).value()); - responseArgs.add(requestMethod); - responseArgs.add(requestUrl); - - // 打印请求头 - HttpHeaders headers = response.getHeaders(); - headers.forEach((headerName, headerValue) -> { - responseLog.append("===Headers=== {}: {}\n"); - responseArgs.add(headerName); - responseArgs.add(String.join(StringUtils.join(headerValue.toArray()))); - }); - - responseLog.append("================ Gateway Response End =================\n"); - // 打印执行时间 - log.info(responseLog.toString(), responseArgs.toArray()); - }) - ); - } - - @Override - public int getOrder() { - return Ordered.HIGHEST_PRECEDENCE; - } -} diff --git a/ensign-gateway/src/main/java/com/ensign/ensigngateway/conf/RequestLogFilter.java b/ensign-gateway/src/main/java/com/ensign/ensigngateway/conf/RequestLogFilter.java deleted file mode 100644 index 07496e5..0000000 --- a/ensign-gateway/src/main/java/com/ensign/ensigngateway/conf/RequestLogFilter.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.ensign.ensigngateway.conf; - -import lombok.extern.slf4j.Slf4j; -import org.springframework.cloud.gateway.filter.GatewayFilterChain; -import org.springframework.cloud.gateway.filter.GlobalFilter; -import org.springframework.cloud.gateway.support.ServerWebExchangeUtils; -import org.springframework.core.Ordered; -import org.springframework.http.HttpHeaders; -import org.springframework.http.server.reactive.ServerHttpRequest; -import org.springframework.stereotype.Component; -import org.springframework.util.MultiValueMap; -import org.springframework.web.server.ServerWebExchange; -import org.springframework.web.util.UriComponentsBuilder; -import reactor.core.publisher.Mono; - -import java.net.URI; -import java.util.ArrayList; -import java.util.LinkedHashSet; -import java.util.List; - -/** - * @Description: TODO - * @Date: 2024/10/30 9:32 - * @Created: by ZZSLL - */ - -@Slf4j -@Component -public class RequestLogFilter implements GlobalFilter, Ordered { - - @Override - public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { - ServerHttpRequest request = exchange.getRequest(); - // 打印请求路径 - String path = request.getPath().pathWithinApplication().value(); - // 打印请求url - String requestUrl = this.getOriginalRequestUrl(exchange); - - // **构建成一条长 日志,避免并发下日志错乱** - StringBuilder reqLog = new StringBuilder(200); - // 日志参数 - List reqArgs = new ArrayList<>(); - reqLog.append("\n\n================ Gateway Request Start ================\n"); - // 打印路由添加占位符 - reqLog.append("===> {}: {}\n"); - // 参数 - String requestMethod = request.getMethod().name(); - reqArgs.add(requestMethod); - reqArgs.add(requestUrl); - - // 打印请求头 - HttpHeaders headers = request.getHeaders(); - headers.forEach((headerName, headerValue) -> { - reqLog.append("===Headers=== {}: {}\n"); - reqArgs.add(headerName); - }); - - reqLog.append("================ Gateway Request End =================\n"); - // 打印执行时间 - log.info(reqLog.toString(), reqArgs.toArray()); - return chain.filter(exchange); - } - - private String getOriginalRequestUrl(ServerWebExchange exchange) { - ServerHttpRequest request = exchange.getRequest(); - LinkedHashSet uris = exchange.getRequiredAttribute(ServerWebExchangeUtils.GATEWAY_ORIGINAL_REQUEST_URL_ATTR); - URI requestUri = uris.stream().findFirst().orElse(request.getURI()); - MultiValueMap queryParams = request.getQueryParams(); - return UriComponentsBuilder.fromPath(requestUri.getRawPath()).queryParams(queryParams).build().toUriString(); - } - - @Override - public int getOrder() { - return Ordered.LOWEST_PRECEDENCE; - } -} \ No newline at end of file diff --git a/ensign-gateway/src/main/resources/application.yml b/ensign-gateway/src/main/resources/application.yml index 6933520..df8c290 100644 --- a/ensign-gateway/src/main/resources/application.yml +++ b/ensign-gateway/src/main/resources/application.yml @@ -4,8 +4,6 @@ spring: cloud: gateway: -# globalcors: -# add-to-simple-url-handler-mapping: true routes: - id: proxy_route @@ -19,15 +17,13 @@ spring: uri: http://127.0.0.1:38080 predicates: - Path=/admin-api/** - filters: - - RewritePath=/admin-api/(?.*), /${segment} servlet: multipart: max-file-size: 20MB max-request-size: 20MB server: - port: 38080 + port: 48080 kingdee: test-public-end-point: 'http://122.4.221.133:8022' @@ -35,3 +31,12 @@ kingdee: prod-public-end-point: 'http://122.4.221.130:8022' prod-inner-end-point: 'http://10.64.111.134:8022' local: 'http://127.0.0.1:38080' + +logging: + level: + reactor: + netty: + http: + server: + logging: + AccessLog: INFO \ No newline at end of file diff --git a/ensign-server/src/main/resources/application-local.yaml b/ensign-server/src/main/resources/application-local.yaml index d7132cf..d63757a 100644 --- a/ensign-server/src/main/resources/application-local.yaml +++ b/ensign-server/src/main/resources/application-local.yaml @@ -1,5 +1,5 @@ server: - port: 48080 + port: 38080 --- #################### 数据库相关配置 #################### spring: