forked from toolchaintechnologycenter/spdm-backend
fix:日志参数
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user