diff --git a/pigx-common/pigx-common-log/src/main/java/com/pig4cloud/pigx/common/log/event/SysLogListener.java b/pigx-common/pigx-common-log/src/main/java/com/pig4cloud/pigx/common/log/event/SysLogListener.java index dba01c182..a61e9ae73 100755 --- a/pigx-common/pigx-common-log/src/main/java/com/pig4cloud/pigx/common/log/event/SysLogListener.java +++ b/pigx-common/pigx-common-log/src/main/java/com/pig4cloud/pigx/common/log/event/SysLogListener.java @@ -16,7 +16,11 @@ package com.pig4cloud.pigx.common.log.event; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.core.util.TypeUtil; import com.fasterxml.jackson.annotation.JsonFilter; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ser.FilterProvider; @@ -34,7 +38,12 @@ import org.springframework.beans.factory.InitializingBean; import org.springframework.context.event.EventListener; import org.springframework.core.annotation.Order; import org.springframework.scheduling.annotation.Async; +import org.springframework.validation.BindingResult; +import javax.servlet.ServletRequest; +import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; +import java.util.List; import java.util.Objects; /** @@ -44,7 +53,14 @@ import java.util.Objects; @RequiredArgsConstructor public class SysLogListener implements InitializingBean { - // new 一个 避免日志脱敏策略影响全局ObjectMapper + /** + * 忽略序列化的对象类型 + */ + private final static Class[] ignoreClass = { ServletRequest.class, BindingResult.class }; + + /** + * new 一个 避免日志脱敏策略影响全局ObjectMapper + */ private final static ObjectMapper objectMapper = new ObjectMapper(); private final RemoteLogService remoteLogService; @@ -60,8 +76,19 @@ public class SysLogListener implements InitializingBean { // json 格式刷参数放在异步中处理,提升性能 if (Objects.nonNull(source.getBody()) && logProperties.isRequestEnabled()) { - String params = objectMapper.writeValueAsString(source.getBody()); - source.setParams(StrUtil.subPre(params, logProperties.getMaxLength())); + Object[] args = (Object[]) source.getBody(); + List list = CollUtil.toList(args); + // 删除部分无法序列化的参数 + list.removeIf(obj -> Arrays.stream(ignoreClass).anyMatch(clazz -> clazz.isAssignableFrom(obj.getClass()))); + + try { + // 序列化参数 + String params = objectMapper.writeValueAsString(list); + source.setParams(StrUtil.subPre(params, logProperties.getMaxLength())); + } + catch (Exception e) { + log.error("请求参数序列化异常:{}", e.getMessage()); + } } source.setBody(null); diff --git a/pigx-visual/pigx-pay-platform/src/main/java/com/pig4cloud/pigx/pay/controller/PayNotifyRecordController.java b/pigx-visual/pigx-pay-platform/src/main/java/com/pig4cloud/pigx/pay/controller/PayNotifyRecordController.java index 85a2a09e4..c16bd0d29 100755 --- a/pigx-visual/pigx-pay-platform/src/main/java/com/pig4cloud/pigx/pay/controller/PayNotifyRecordController.java +++ b/pigx-visual/pigx-pay-platform/src/main/java/com/pig4cloud/pigx/pay/controller/PayNotifyRecordController.java @@ -146,7 +146,6 @@ public class PayNotifyRecordController { @Inner(false) @SneakyThrows @XssCleanIgnore - @SysLog("支付宝渠道异步回调") @PostMapping("/ali/callbak") @Operation(summary = "支付宝渠道异步回调", description = "支付宝渠道异步回调") public void aliCallbak(HttpServletRequest request, HttpServletResponse response) { @@ -165,7 +164,6 @@ public class PayNotifyRecordController { @XssCleanIgnore @PostMapping("/wx/callbak") @Operation(summary = "微信渠道支付回调", description = "微信渠道支付回调") - @SysLog("微信渠道支付回调") public String wxCallbak(HttpServletRequest request) { String xmlMsg = HttpKit.readData(request); log.info("微信订单回调信息:{}", xmlMsg); @@ -183,7 +181,6 @@ public class PayNotifyRecordController { @XssCleanIgnore @PostMapping("/merge/callbak") @Operation(summary = "聚合渠道异步回调", description = "聚合渠道异步回调") - @SysLog("聚合渠道异步回调") public void mergeCallbak(HttpServletRequest request, HttpServletResponse response) { // 解析回调信息 Map params = AliPayApi.toMap(request);