From 58ec69058abc55e01601f4a6c62c86620804ddaf Mon Sep 17 00:00:00 2001 From: TheWhiteDog9487 Date: Tue, 19 Aug 2025 09:44:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A5=E5=BF=97=E4=B8=AD=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=AF=B7=E6=B1=82ID=EF=BC=8C=E4=B8=8D=E4=BC=9A=E5=86=8D?= =?UTF-8?q?=E5=88=86=E4=B8=8D=E6=B8=85=E6=A5=9A=E8=B0=81=E6=98=AF=E8=B0=81?= =?UTF-8?q?=E4=BA=86=20=E9=9C=80=E8=A6=81systemd=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E7=9A=84=E5=A4=A7=E5=AE=B6=EF=BC=8C=E5=9D=9A=E5=AE=9A=E5=AE=88?= =?UTF-8?q?=E4=BD=8F=EF=BC=8C=E6=8F=B4=E5=85=B5=E5=BE=88=E5=BF=AB=E5=B0=B1?= =?UTF-8?q?=E5=88=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +++ build.gradle.kts | 2 +- .../Controller/Filter/LogClientInfo.java | 1 - .../Controller/Filter/SetMDCRequestID.java | 27 +++++++++++++++++++ src/main/resources/application.yml | 6 ++++- 5 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 src/main/java/xyz/thewhitedog9487/WebAPI/Controller/Filter/SetMDCRequestID.java diff --git a/README.md b/README.md index a2b7103..3402468 100644 --- a/README.md +++ b/README.md @@ -9,5 +9,9 @@ **本项目不保证配置文件和环境变量的向后兼容!!!** **也就是说,如果你也要用的话,你可能必须在更新之后重新配置环境变量和配置文件** +# 下一步 +- systemd服务自动安装和卸载 +- Swagger自动生成API接口文档 + # 许可授权 WTFPL \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index fa11d45..7b888e5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } group = "xyz.thewhitedog9487" -version = "0.2.0" +version = "0.3.0" java { toolchain { diff --git a/src/main/java/xyz/thewhitedog9487/WebAPI/Controller/Filter/LogClientInfo.java b/src/main/java/xyz/thewhitedog9487/WebAPI/Controller/Filter/LogClientInfo.java index 29fcdfa..28062f1 100644 --- a/src/main/java/xyz/thewhitedog9487/WebAPI/Controller/Filter/LogClientInfo.java +++ b/src/main/java/xyz/thewhitedog9487/WebAPI/Controller/Filter/LogClientInfo.java @@ -18,7 +18,6 @@ public class LogClientInfo extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { log.info("接收到对于{} {} 的请求", request.getMethod(), request.getRequestURL() + ( ( request.getQueryString() == null ) ? "" : "?" + request.getQueryString() ) ); - log.info("请求ID:{}", request.getRequestId()); if ( request.getHeader("CF-Connecting-IP".toLowerCase() ) instanceof String IP ) { /* ↑ 如果成功完成instanceof模式匹配,那么模式变量一定非空 diff --git a/src/main/java/xyz/thewhitedog9487/WebAPI/Controller/Filter/SetMDCRequestID.java b/src/main/java/xyz/thewhitedog9487/WebAPI/Controller/Filter/SetMDCRequestID.java new file mode 100644 index 0000000..aedd1a8 --- /dev/null +++ b/src/main/java/xyz/thewhitedog9487/WebAPI/Controller/Filter/SetMDCRequestID.java @@ -0,0 +1,27 @@ +package xyz.thewhitedog9487.WebAPI.Controller.Filter; + +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.slf4j.MDC; +import org.springframework.core.Ordered; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; +import org.springframework.web.filter.OncePerRequestFilter; + +import java.io.IOException; + +@Component +@Order(Ordered.HIGHEST_PRECEDENCE) +// ↑ 拉高优先级,确保在日志记录之前设置MDC,不然和没设置就没有区别了 +class SetMDCRequestID extends OncePerRequestFilter { + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { + try { + MDC.put("RequestID", request.getRequestId()); + filterChain.doFilter(request, response); + } finally { + // ↓ 防止内存泄漏 + MDC.remove("RequestID"); } } } \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 1536dc0..ce7f42c 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -5,4 +5,8 @@ spring: virtual: enabled: true server: - port: 36987 \ No newline at end of file + port: 36987 +logging: + pattern: + level: "%5p %X{RequestID}" + # https://docs.spring.io/spring-boot/reference/features/logging.html#features.logging.custom-log-configuration \ No newline at end of file