From 08d187fccefd800b364a4c4351d5ba4f5d9a7094 Mon Sep 17 00:00:00 2001 From: lihongjie0209 Date: Sun, 6 Apr 2025 15:33:41 +0800 Subject: [PATCH] =?UTF-8?q?feat.logging:=20=E6=B7=BB=E5=8A=A0=E8=AF=B7?= =?UTF-8?q?=E6=B1=82ID=E5=92=8C=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E7=9A=84=E6=97=A5=E5=BF=97=E5=85=B3=E8=81=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 Constants 中添加 REQUEST_ID 常量 - 在 AuthFilter 中添加 userName 和 userId 的 MDC 记录 - 新增 RequestIdFilter过滤器,用于设置请求ID - 更新 logback-spring.xml,添加日志关联信息的输出格式 --- .../cn/lihongjie/coal/common/Constants.java | 1 + .../cn/lihongjie/coal/filter/AuthFilter.java | 3 +- .../coal/filter/RequestIdFilter.java | 46 +++++++++++++++++++ src/main/resources/logback-spring.xml | 2 + 4 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 src/main/java/cn/lihongjie/coal/filter/RequestIdFilter.java diff --git a/src/main/java/cn/lihongjie/coal/common/Constants.java b/src/main/java/cn/lihongjie/coal/common/Constants.java index 6862fa7c..cbf6c2fe 100644 --- a/src/main/java/cn/lihongjie/coal/common/Constants.java +++ b/src/main/java/cn/lihongjie/coal/common/Constants.java @@ -52,6 +52,7 @@ public class Constants { public static final String CACHE_ORGANIZATION_PERMISSION_IDS = "organizationPermissionIds"; public static final String CACHE_USER_BY_ID = "userById"; public static final String CACHE_USER_RESOURCE_IDS = "userResourceIds"; + public static final String REQUEST_ID = "requestId"; public static String SYSCONFIG_ENABLE_CAPTCHA = "enable_captcha"; public static String SYSCONFIG_ENABLE_REQUEST_SIGN = "enable_request_sign"; public static String SYSCONFIG_SESSION_TIMEOUT = "session_timeout"; diff --git a/src/main/java/cn/lihongjie/coal/filter/AuthFilter.java b/src/main/java/cn/lihongjie/coal/filter/AuthFilter.java index 7f52e244..33239521 100644 --- a/src/main/java/cn/lihongjie/coal/filter/AuthFilter.java +++ b/src/main/java/cn/lihongjie/coal/filter/AuthFilter.java @@ -147,7 +147,8 @@ public class AuthFilter extends OncePerRequestFilter { } var user = Ctx.currentUser(); - MDC.put("user", user.getUsername()); + MDC.put("userName", user.getUsername()); + MDC.put("userId", user.getId()); stopWatch.start("hasResource"); diff --git a/src/main/java/cn/lihongjie/coal/filter/RequestIdFilter.java b/src/main/java/cn/lihongjie/coal/filter/RequestIdFilter.java new file mode 100644 index 00000000..90c4a053 --- /dev/null +++ b/src/main/java/cn/lihongjie/coal/filter/RequestIdFilter.java @@ -0,0 +1,46 @@ +package cn.lihongjie.coal.filter; + +import cn.lihongjie.coal.common.Constants; + +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +import lombok.extern.slf4j.Slf4j; + +import org.apache.commons.lang3.StringUtils; +import org.slf4j.MDC; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; +import org.springframework.web.filter.OncePerRequestFilter; + +import java.io.IOException; +import java.util.*; + +@Component +@Order(-1) +@Slf4j +public class RequestIdFilter extends OncePerRequestFilter { + @Override + protected void doFilterInternal( + HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) + throws ServletException, IOException { + + String requestId = request.getHeader("X-Request-Id"); + + if (StringUtils.isNotBlank(requestId)) { + + MDC.put(Constants.REQUEST_ID, requestId); + + } else { + MDC.put(Constants.REQUEST_ID, UUID.randomUUID().toString()); + } + + try { + filterChain.doFilter(request, response); + } finally { + MDC.remove(Constants.REQUEST_ID); + } + } +} diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml index fa57e878..4b0ed785 100644 --- a/src/main/resources/logback-spring.xml +++ b/src/main/resources/logback-spring.xml @@ -3,6 +3,7 @@ + @@ -10,6 +11,7 @@ +