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