From 2becab420df8e5471016fd1cc25d9c9eea275a7c Mon Sep 17 00:00:00 2001 From: weiyachao <13526234727@126.com> Date: Tue, 8 Aug 2023 14:03:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=93=E5=8D=B0=E6=97=A5=E5=BF=97-2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qiuguo/iot/base/filter/LogWebFilter.java | 99 ------------------- 1 file changed, 99 deletions(-) delete mode 100644 iot-common/iot-base/src/main/java/com/qiuguo/iot/base/filter/LogWebFilter.java diff --git a/iot-common/iot-base/src/main/java/com/qiuguo/iot/base/filter/LogWebFilter.java b/iot-common/iot-base/src/main/java/com/qiuguo/iot/base/filter/LogWebFilter.java deleted file mode 100644 index fb0ea54..0000000 --- a/iot-common/iot-base/src/main/java/com/qiuguo/iot/base/filter/LogWebFilter.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.qiuguo.iot.base.filter; - -import java.nio.charset.StandardCharsets; -import java.util.UUID; -import lombok.extern.slf4j.Slf4j; -import org.apache.logging.log4j.ThreadContext; -import org.reactivestreams.Publisher; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.io.buffer.DataBuffer; -import org.springframework.core.io.buffer.DataBufferFactory; -import org.springframework.core.io.buffer.DataBufferUtils; -import org.springframework.core.io.buffer.DefaultDataBufferFactory; -import org.springframework.http.HttpMethod; -import org.springframework.http.server.reactive.ServerHttpRequest; -import org.springframework.http.server.reactive.ServerHttpRequestDecorator; -import org.springframework.http.server.reactive.ServerHttpResponse; -import org.springframework.http.server.reactive.ServerHttpResponseDecorator; -import org.springframework.web.server.ServerWebExchange; -import org.springframework.web.server.WebFilter; -import org.springframework.web.server.WebFilterChain; -import reactor.core.publisher.Flux; -import reactor.core.publisher.Mono; - -@Configuration -@Slf4j -public class LogWebFilter implements WebFilter { - @Override - public Mono filter(ServerWebExchange exchange, WebFilterChain chain) { - long startTime = System.currentTimeMillis(); - ThreadContext.put("logid", UUID.randomUUID().toString()); - ServerHttpRequest request = exchange.getRequest(); - String ip = request.getRemoteAddress().getHostName(); - String m = request.getMethod().toString(); - - log.info("api start time:{} ip:{} method:{} url:{} param:{} headers:{}", - startTime, - ip, - m, - request.getPath(), - request.getQueryParams(), - request.getHeaders()); - - ServerWebExchange.Builder ex = exchange.mutate(); - ex.response(getResponse(exchange)); - - if(!request.getMethod().equals(HttpMethod.GET) && !request.getMethod().equals(HttpMethod.DELETE)){ - ex.request(getRequest(exchange)); - } - return chain.filter(ex.build()).doFinally(signalType -> { - long endTime = System.currentTimeMillis(); - log.info("api end time:{}, total time:{}", endTime, endTime - startTime); - ThreadContext.clearAll(); - }); - } - - private ServerHttpRequest getRequest(ServerWebExchange exchange){ - ServerHttpRequest request = exchange.getRequest(); - return new ServerHttpRequestDecorator(request){ - @Override - public Flux getBody() { - Flux body = this.getDelegate().getBody(); - return body.map(dataBuffer -> { - log.info("request:{}", dataBuffer.toString(StandardCharsets.UTF_8)); - return dataBuffer; - }); - } - }; - } - - private ServerHttpResponse getResponse(ServerWebExchange exchange){ - ServerHttpResponse response = exchange.getResponse(); - return new ServerHttpResponseDecorator(response){ - @Override - public Mono writeWith(Publisher body){ - if (body instanceof Flux) { - Flux fluxBody = Flux.from(body); - return super.writeWith(fluxBody.buffer().map(dataBuffers -> { - DataBufferFactory dataBufferFactory = new DefaultDataBufferFactory(); - DataBuffer joinBuffer = dataBufferFactory.join(dataBuffers); - byte[] returnContent = new byte[joinBuffer.readableByteCount()]; - joinBuffer.read(returnContent); - DataBufferUtils.release(joinBuffer); - String returnStr = new String(returnContent, StandardCharsets.UTF_8); - log.info("response:{}", returnStr); - return response.bufferFactory().wrap(returnContent); - })); - }else if(body instanceof Mono){ - Mono monoBody = Mono.from(body); - return super.writeWith(monoBody.map(dataBuffer -> { - log.info("response:{}", dataBuffer.toString(StandardCharsets.UTF_8)); - return response.bufferFactory().wrap(dataBuffer.toString(StandardCharsets.UTF_8).getBytes()); - })); - } - return super.writeWith(body); - } - }; - } - -}