feat(log): 添加traceId
This commit is contained in:
@@ -30,6 +30,7 @@ import org.aspectj.lang.annotation.Around;
|
||||
import org.aspectj.lang.annotation.Aspect;
|
||||
import org.aspectj.lang.annotation.Pointcut;
|
||||
import org.springblade.core.log.utils.LogTraceUtil;
|
||||
import org.springblade.core.tool.utils.StringUtil;
|
||||
|
||||
/**
|
||||
* 为异步方法添加traceId
|
||||
@@ -45,11 +46,17 @@ public class LogTraceAspect {
|
||||
|
||||
@Around("logPointCut()")
|
||||
public Object around(ProceedingJoinPoint point) throws Throwable {
|
||||
boolean clean = false;
|
||||
try {
|
||||
LogTraceUtil.insert();
|
||||
if (StringUtil.isBlank(LogTraceUtil.getTraceIdFromMDC())) {
|
||||
LogTraceUtil.insert();
|
||||
clean = true;
|
||||
}
|
||||
return point.proceed();
|
||||
} finally {
|
||||
LogTraceUtil.remove();
|
||||
if (clean) {
|
||||
LogTraceUtil.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+13
-4
@@ -25,9 +25,13 @@
|
||||
*/
|
||||
package org.springblade.core.log.filter;
|
||||
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import org.springblade.core.log.utils.LogTraceUtil;
|
||||
|
||||
import jakarta.servlet.*;
|
||||
import org.springblade.core.tool.constant.BladeConstant;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
@@ -43,13 +47,18 @@ public class LogTraceFilter implements Filter {
|
||||
|
||||
@Override
|
||||
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
|
||||
boolean flag = LogTraceUtil.insert();
|
||||
String traceId = null;
|
||||
if (request instanceof HttpServletRequest httpServletRequest) {
|
||||
traceId = httpServletRequest.getHeader(BladeConstant.TRACE_ID_HEADER);
|
||||
}
|
||||
traceId = LogTraceUtil.insert(traceId);
|
||||
try {
|
||||
if (response instanceof HttpServletResponse httpServletResponse) {
|
||||
httpServletResponse.addHeader(BladeConstant.TRACE_ID_HEADER, traceId);
|
||||
}
|
||||
chain.doFilter(request, response);
|
||||
} finally {
|
||||
if (flag) {
|
||||
LogTraceUtil.remove();
|
||||
}
|
||||
LogTraceUtil.remove();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
package org.springblade.core.log.utils;
|
||||
|
||||
import org.slf4j.MDC;
|
||||
import org.springblade.core.tool.constant.BladeConstant;
|
||||
import org.springblade.core.tool.utils.StringUtil;
|
||||
|
||||
/**
|
||||
@@ -34,7 +35,6 @@ import org.springblade.core.tool.utils.StringUtil;
|
||||
* @author Chill
|
||||
*/
|
||||
public class LogTraceUtil {
|
||||
private static final String UNIQUE_ID = "traceId";
|
||||
|
||||
/**
|
||||
* 获取日志追踪id格式
|
||||
@@ -43,23 +43,39 @@ public class LogTraceUtil {
|
||||
return StringUtil.randomUUID();
|
||||
}
|
||||
|
||||
/**
|
||||
* 从mdc获取日志追踪id
|
||||
* @return
|
||||
*/
|
||||
public static String getTraceIdFromMDC() {
|
||||
return MDC.get(BladeConstant.MDC_TRACE_ID_KEY);
|
||||
}
|
||||
|
||||
/**
|
||||
* 插入traceId
|
||||
*/
|
||||
public static boolean insert() {
|
||||
MDC.put(UNIQUE_ID, getTraceId());
|
||||
return true;
|
||||
public static String insert() {
|
||||
return LogTraceUtil.insert(null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 移除traceId
|
||||
*/
|
||||
public static boolean remove() {
|
||||
MDC.remove(UNIQUE_ID);
|
||||
MDC.remove(BladeConstant.MDC_TRACE_ID_KEY);
|
||||
return true;
|
||||
}
|
||||
|
||||
public static String getTraceIdFromMDC() {
|
||||
return MDC.get(UNIQUE_ID);
|
||||
/**
|
||||
* 插入traceId
|
||||
* @param traceId
|
||||
* @return
|
||||
*/
|
||||
public static String insert(String traceId) {
|
||||
if (traceId == null) {
|
||||
traceId = getTraceId();
|
||||
}
|
||||
MDC.put(BladeConstant.MDC_TRACE_ID_KEY, traceId);
|
||||
return traceId;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<conversionRule conversionWord="wEx" class="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
|
||||
<!-- 彩色日志格式 -->
|
||||
<property name="CONSOLE_LOG_PATTERN"
|
||||
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
|
||||
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr([%X{traceId:-N/A}]){yellow} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
|
||||
<!-- 控制台输出 -->
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<conversionRule conversionWord="wEx" class="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
|
||||
<!-- 彩色日志格式 -->
|
||||
<property name="CONSOLE_LOG_PATTERN"
|
||||
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
|
||||
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr([%X{traceId:-N/A}]){yellow} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
|
||||
<!-- 控制台输出 -->
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<conversionRule conversionWord="wEx" class="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
|
||||
<!-- 彩色日志格式 -->
|
||||
<property name="CONSOLE_LOG_PATTERN"
|
||||
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
|
||||
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr([%X{traceId:-N/A}]){yellow} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
|
||||
<!-- 控制台输出 -->
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
||||
|
||||
Reference in New Issue
Block a user