|
|
@ -4,9 +4,12 @@ import com.qs.serve.common.utils.ServletUtils; |
|
|
|
import com.qs.serve.common.conf.DevEnvironmentConfig; |
|
|
|
import com.qs.serve.framework.base.framework.security.model.LoginUser; |
|
|
|
import com.qs.serve.framework.base.util.DateUtils; |
|
|
|
import com.qs.serve.framework.base.util.IdUtil; |
|
|
|
import com.qs.serve.framework.redis.RedisService; |
|
|
|
import com.qs.serve.modules.sys.common.AuthContextUtils; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.jboss.logging.MDC; |
|
|
|
import org.springframework.core.Ordered; |
|
|
|
import org.springframework.core.annotation.Order; |
|
|
|
import org.springframework.stereotype.Component; |
|
|
|
import org.springframework.util.StringUtils; |
|
|
@ -35,7 +38,7 @@ import java.time.format.DateTimeFormatter; |
|
|
|
@Slf4j |
|
|
|
@Component |
|
|
|
@WebFilter(filterName = "HttpServletRequestFilter", urlPatterns = "/") |
|
|
|
@Order(10000) |
|
|
|
@Order(Ordered.HIGHEST_PRECEDENCE) |
|
|
|
public class HttpServletRequestFilter implements Filter{ |
|
|
|
|
|
|
|
@Resource |
|
|
@ -57,11 +60,16 @@ public class HttpServletRequestFilter implements Filter{ |
|
|
|
} |
|
|
|
} |
|
|
|
long startTime = System.currentTimeMillis(); |
|
|
|
|
|
|
|
String traceId = (IdUtil.getSnowFlakeId()+"").substring(3,18); |
|
|
|
traceId = "[T"+traceId+"]"; |
|
|
|
MDC.put("traceId", traceId); |
|
|
|
if(null == requestWrapper) { |
|
|
|
filterChain.doFilter(servletRequest, servletResponse); |
|
|
|
} else { |
|
|
|
filterChain.doFilter(requestWrapper, servletResponse); |
|
|
|
} |
|
|
|
MDC.remove("traceId"); |
|
|
|
long endTime = System.currentTimeMillis(); |
|
|
|
double diffTime = DateUtils.diffTime(startTime,endTime); |
|
|
|
assert servletRequest instanceof HttpServletRequest; |
|
|
@ -74,23 +82,23 @@ public class HttpServletRequestFilter implements Filter{ |
|
|
|
if (ServletUtils.isJsonRequest(request)&&requestWrapper!=null) { |
|
|
|
reqBody = requestWrapper.getBody(); |
|
|
|
} |
|
|
|
StringBuffer buffer = new StringBuffer("\n["+method+"] "+url); |
|
|
|
StringBuffer buffer = new StringBuffer("\n"+traceId+" ["+method+"] "+url); |
|
|
|
if(diffTime>3D){ |
|
|
|
buffer.append(" 长耗时: "+diffTime+"秒"); |
|
|
|
} |
|
|
|
if(supplierId!=null){ |
|
|
|
buffer.append(" 供应商ID: "+supplierId); |
|
|
|
} |
|
|
|
if(!StringUtils.isEmpty(queryStr)){ |
|
|
|
buffer.append("\n参数: "+queryStr); |
|
|
|
buffer.append("\n"+traceId+"参数: "+queryStr); |
|
|
|
} |
|
|
|
if(DevEnvironmentConfig.isDev() &&!StringUtils.isEmpty(reqBody)){ |
|
|
|
buffer.append("\n请求体: "+reqBody); |
|
|
|
} |
|
|
|
if(diffTime>0.6D){ |
|
|
|
buffer.append("\n耗时: "+diffTime+"秒"); |
|
|
|
buffer.append("\n"+traceId+" 请求体: "+reqBody); |
|
|
|
} |
|
|
|
try { |
|
|
|
LoginUser loginUser = AuthContextUtils.getLoginUser(false); |
|
|
|
if(loginUser!=null){ |
|
|
|
buffer.append("\n用户: "+loginUser.getNick()); |
|
|
|
buffer.append("\n"+traceId+" 用户: "+loginUser.getNick()); |
|
|
|
buffer.append(" IP:["+ServletUtils.getIp(request)+"]"); |
|
|
|
buffer.append(" 时间:["+ LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)+"]"); |
|
|
|
} |
|
|
|