Browse Source

add traceId

hr~ 3 ngày trước cách đây
mục cha
commit
655b6f0ba8

+ 11 - 1
product-common/src/main/java/com/poyee/aspect/weblog/WebLogAspect.java

@@ -14,6 +14,8 @@ import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import org.slf4j.MDC;
+
 import javax.servlet.http.HttpServletRequest;
 import java.lang.reflect.Method;
 import java.lang.reflect.Parameter;
@@ -21,6 +23,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.UUID;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
@@ -40,8 +43,13 @@ public class WebLogAspect {
     @Before("webLog()")
     public void doBefore(JoinPoint joinPoint) {
         HttpServletRequest request = ServletUtils.getRequest();
+        String traceId = Objects.requireNonNull(request).getHeader("X-Trace-Id");
+        if (!StringUtils.hasText(traceId)) {
+            traceId = UUID.randomUUID().toString().replace("-", "");
+        }
+        MDC.put("traceId", traceId);
         long currentTimeMillis = System.currentTimeMillis();
-        String requestURI = Objects.requireNonNull(request).getRequestURI();
+        String requestURI = request.getRequestURI();
         RequestNoContext.callTime.set(currentTimeMillis);
         RequestNoContext.apiUrl.set(requestURI);
         RequestNoContext.currentThreadId.set(currentTimeMillis);
@@ -64,6 +72,7 @@ public class WebLogAspect {
         long costTime = System.currentTimeMillis() - RequestNoContext.callTime.get();
         logger.info("\n--------------[{}]返回内容开始----------------\n    接口地址:{}\n    返回内容:{}\n    请求耗时:{}ms\n--------------[{}]返回内容结束----------------", RequestNoContext.currentThreadId.get(), RequestNoContext.apiUrl.get(), JSONUtil.toJsonStr(returns), costTime, RequestNoContext.currentThreadId.get());
         RequestNoContext.remove();
+        MDC.remove("traceId");
     }
 
 
@@ -73,6 +82,7 @@ public class WebLogAspect {
         long costTime = System.currentTimeMillis() - RequestNoContext.callTime.get();
         logger.error("\n--------------[{}]返回内容开始----------------\n    接口地址:{}\n    请求令牌:{}\n    接口参数:{}\n    请求失败:{}\n    请求耗时:{}ms\n--------------[{}]返回内容结束----------------", RequestNoContext.currentThreadId.get(), RequestNoContext.apiUrl.get(), Objects.requireNonNull(request).getHeader("Authorization"), RequestNoContext.requestParam.get(), e.getMessage(), costTime, RequestNoContext.currentThreadId.get());
         RequestNoContext.remove();
+        MDC.remove("traceId");
     }
 
     /**

+ 1 - 0
product-web/src/main/java/com/poyee/facade/impl/ProductInfoFacade.java

@@ -60,6 +60,7 @@ public class ProductInfoFacade implements IProductInfoFacade {
     public PageInfo<ProductListRes> list(ProductSearchReq productSearchReq) {
         PageHelper.startPage(productSearchReq.getPage(), productSearchReq.getPageSize());
         LambdaQueryWrapper<ProductInfo> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.orderByDesc(ProductInfo::getSort);
         if (StrUtil.isNotBlank(productSearchReq.getProductName())) {
             lambdaQueryWrapper.likeRight(ProductInfo::getProductName, productSearchReq.getProductName());
         }

+ 1 - 1
product-web/src/main/resources/logback-spring.xml

@@ -2,7 +2,7 @@
 <configuration>
     <!-- 定义日志文件的存储地址 -->
     <property name="LOG_PATH" value="logs"/>
-    <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"/>
+    <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}:%L [%X{traceId}] - %msg%n"/>
 
     <!-- 控制台输出 -->
     <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">