fix:日志参数

This commit is contained in:
2025-12-05 11:07:48 +08:00
parent fd43685c8a
commit f06110a45a
3 changed files with 31 additions and 7 deletions

View File

@@ -17,6 +17,7 @@
package com.sdm.common.log.aspect;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson2.JSON;
import com.sdm.common.common.ThreadLocalContext;
import com.sdm.common.log.annotation.SysLog;
import com.sdm.common.log.dto.SysLogDTO;
@@ -72,9 +73,9 @@ public class SysLogAspect {
Long endTime = System.currentTimeMillis();
logVo.setTime(endTime - startTime);
logVo.setTenantId(ThreadLocalContext.getTenantId());
log.info("[SysLogAspect] logVo:{}", JSON.toJSONString(logVo));
SpringContextHolder.publishEvent(new SysLogEvent(logVo));
}
return obj;
}

View File

@@ -18,6 +18,7 @@ package com.sdm.common.log.event;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson2.JSON;
import com.fasterxml.jackson.annotation.JsonFilter;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ser.FilterProvider;
@@ -89,6 +90,7 @@ public class SysLogListener implements InitializingBean {
}
source.setBody(null);
log.info("[SysLogListener] saveLog params:{}", JSON.toJSONString(source));
sysLogFeignClient.saveLog(source);
}

View File

@@ -16,6 +16,7 @@
package com.sdm.common.log.utils;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.URLUtil;
@@ -28,6 +29,7 @@ import com.sdm.common.log.dto.SysLogDTO;
import com.sdm.common.utils.DateUtils;
import jakarta.servlet.http.HttpServletRequest;
import lombok.experimental.UtilityClass;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.expression.EvaluationContext;
@@ -38,6 +40,7 @@ import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
@@ -47,6 +50,7 @@ import java.util.Objects;
* @author L.cm
*/
@UtilityClass
@Slf4j
public class SysLogUtils {
public SysLogDTO getSysLog() {
@@ -59,13 +63,30 @@ public class SysLogUtils {
sysLog.setRemoteAddr(JakartaServletUtil.getClientIP(request));
sysLog.setUserAgent(request.getHeader(HttpHeaders.USER_AGENT));
sysLog.setCreateBy(ObjectUtils.isNotEmpty(ThreadLocalContext.getUserName()) ? ThreadLocalContext.getUserName() : "anonymousUser");
// 获取服务名称
sysLog.setServiceId("simulation-" + SpringUtil.getProperty("spring.application.name"));
try {
// 获取服务名称
sysLog.setServiceId("simulation-" + SpringUtil.getProperty("spring.application.name"));
// get 参数脱敏
SysLogProperties logProperties = SpringUtil.getBean(SysLogProperties.class);
Map<String, String[]> paramsMap = MapUtil.removeAny(request.getParameterMap(), ArrayUtil.toArray(logProperties.getExcludeFields(), String.class));
sysLog.setParams(HttpUtil.toParams(paramsMap));
// get 参数脱敏 - 创建副本而不是修改原Map
SysLogProperties logProperties = SpringUtil.getBean(SysLogProperties.class);
Map<String, String[]> originalParams = request.getParameterMap();
if (!originalParams.isEmpty()) {
// 创建可修改的副本
Map<String, String[]> filteredParams = new HashMap<>(originalParams);
// 移除需要排除的字段
if (logProperties != null && CollectionUtil.isNotEmpty(logProperties.getExcludeFields())) {
String[] excludeFields = ArrayUtil.toArray(logProperties.getExcludeFields(), String.class);
for (String field : excludeFields) {
filteredParams.remove(field);
}
}
sysLog.setParams(HttpUtil.toParams(filteredParams));
}
} catch (Exception e) {
// 如果发生异常,记录简化信息
log.warn("记录请求参数时发生异常: {}", e.getMessage());
sysLog.setParams("parameter count: " + request.getParameterMap().size());
}
return sysLog;
}