mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
网关服务:网关accesslog输出日志requestBody限制10Mb,超过不输出
This commit is contained in:
@@ -59,6 +59,11 @@ import static cn.hutool.core.date.DatePattern.NORM_DATETIME_MS_FORMATTER;
|
||||
@Component
|
||||
public class AccessLogFilter implements GlobalFilter, Ordered {
|
||||
|
||||
/**
|
||||
* 记录的requestBody最大值
|
||||
*/
|
||||
public static final int REQUEST_BODY_MAX_SIZE = 1024 * 1024 * 10;
|
||||
|
||||
@Resource
|
||||
private CodecConfigurer codecConfigurer;
|
||||
|
||||
@@ -220,9 +225,7 @@ public class AccessLogFilter implements GlobalFilter, Ordered {
|
||||
Flux<? extends DataBuffer> fluxBody = Flux.from(body);
|
||||
return super.writeWith(fluxBody.buffer().map(dataBuffers -> {
|
||||
// 设置 response body 到网关日志
|
||||
byte[] content = readContent(dataBuffers);
|
||||
String responseResult = new String(content, StandardCharsets.UTF_8);
|
||||
gatewayLog.setResponseBody(responseResult);
|
||||
byte[] content = readContent(dataBuffers, gatewayLog);
|
||||
|
||||
// 响应
|
||||
return bufferFactory.wrap(content);
|
||||
@@ -272,14 +275,21 @@ public class AccessLogFilter implements GlobalFilter, Ordered {
|
||||
|
||||
// ========== 参考 ModifyResponseBodyGatewayFilterFactory 中的方法 ==========
|
||||
|
||||
private byte[] readContent(List<? extends DataBuffer> dataBuffers) {
|
||||
private byte[] readContent(List<? extends DataBuffer> dataBuffers, AccessLog gatewayLog) {
|
||||
// 合并多个流集合,解决返回体分段传输
|
||||
DataBufferFactory dataBufferFactory = new DefaultDataBufferFactory();
|
||||
DataBuffer join = dataBufferFactory.join(dataBuffers);
|
||||
byte[] content = new byte[join.readableByteCount()];
|
||||
int readableByteCount = join.readableByteCount();
|
||||
byte[] content = new byte[readableByteCount];
|
||||
join.read(content);
|
||||
// 释放掉内存
|
||||
DataBufferUtils.release(join);
|
||||
|
||||
// 超过10Mb的requestBody不做记录
|
||||
if (REQUEST_BODY_MAX_SIZE >= readableByteCount) {
|
||||
String responseResult = new String(content, StandardCharsets.UTF_8);
|
||||
gatewayLog.setResponseBody(responseResult);
|
||||
}
|
||||
return content;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user