一、引入切面依赖
自己选择需要的版本
<!-- 切面 -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectjweaver.version}</version>
</dependency>
二、增加配置
import java.util.UUID;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.MDC;
import org.springframework.stereotype.Component;
/**
* xxl-job 日志id配置
*
* @author July
* @date 2024-04-16 11:09
**/
@Slf4j
@Aspect
@Component
public class TraceLogAopConfig {
private static final String TRACE_LOG_ID = "logId";
/**
* xxl-job 切点
*/
@Pointcut("@annotation(com.xxl.job.core.handler.annotation.XxlJob)")
public void pointCutExecution() {}
@Before("pointCutExecution()")
public void doBefore(JoinPoint point) {
// 增加xxl-job任务的链式日志id
MDC.put(TRACE_LOG_ID, UUID.randomUUID().toString().replace("-", ""));
}
@After("pointCutExecution()")
public void doAfter(JoinPoint point) {
// xxl-job任务结束,MDC移除
MDC.remove(TRACE_LOG_ID);
}
}
三、logback.xml配置
在合适位置添加 [%X{logId}] , 也可以叫其他的,和配置相同即可
<property name="LOG_CONSOLE_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%-20thread] %magenta(%-5level) %green([%-90.100class] [%X{logId}]) >>> %cyan(%msg) %n"/>