目录
- Springboot接口日志加入链路追python踪traceId
- 1.注解 LogTrace
- 2.切面 LogTraceASPect
- 3.添加依赖
- 4.修改logback-spring.XML
- 5.测试 在类或方法上加上注解@LogTrace
- 总结
Springboot接口日志加入链路追踪traceId
1.注解 LogTrace
package com.bt.springboot.common.annotation; import Java.lang.annotation.*; /** * 链路追踪 * * @author */ @Target({ElementType.METHOD,ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface LogTrace { }
2.切面 LogTraceAspect
package com.bt.springboot.common.aspect; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.slf4j.MDC; import org.springframework.stereotype.Component; import java.util.UUID; /** * 链路追踪 * * @author */ @Aspect @Component @Slf4j public class LogTraceAspect { /** * 与 logback-spring.xml 中的变量一致 */ private static final String TRACE_IDhttp://www.devze.com = "traceId"; /** * 定义切点 切点为 */ @Pointcut("@within(com.bt.springboot.common.annotation.LogTrace)") public void printLog(){ } /** * 环绕通知 */ @Around(value = "printLog()") public Object webLogAround(ProceedingJoinPoint joinPoint) throws Throwable { // 方法执行前加上链路号 String traceId = UUID.randomUUID().toString().replaceAll("-", ""); MDC.put(TRACE_ID, traceId); Object proceed = joinPointphp.proceed(); MDC.remove(TRACE_ID); return proceed; } }
3.添加依赖
<!-- 链路追踪 --> <dependency> <groupId>org.apache.skywalking</groupId> <artifactId>apm-toolkit-logback-1.x</artifactId> <version>8.0.1</version> </dependency>
4.修改logback-spring.xml
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <!-- <encoder>:对日志进行格式化。 <target>:字符串System.out(默认)或者System.err --> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{traceId}] [%-5level] %logger{50} - %msg%n</pattern> </layout> </encoder> </appender>
5.测试 在类或方法上加上注解@LogTrace
package com.bt.springboot.web.controller; import com.bt.springboot.common.annotation.LogTrace; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; /** * @author zkx * @Date 2022/4/8 11:36 */ @LogTrace @Slf4j @RestController public class TestController { @GetMapping("/test") public void test(){ log.info("inwww.devze.comfo"); } }
- 发送请求 日志可查看到traceId
总结
python以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。
精彩评论