日志中增加请求ID,不会再分不清楚谁是谁了

需要systemd服务的大家,坚定守住,援兵很快就到
This commit is contained in:
2025-08-19 09:44:42 +08:00
parent 1ffe3c75fc
commit 58ec69058a
5 changed files with 37 additions and 3 deletions
+4
View File
@@ -9,5 +9,9 @@
**本项目不保证配置文件和环境变量的向后兼容!!!** **本项目不保证配置文件和环境变量的向后兼容!!!**
**也就是说,如果你也要用的话,你可能必须在更新之后重新配置环境变量和配置文件** **也就是说,如果你也要用的话,你可能必须在更新之后重新配置环境变量和配置文件**
# 下一步
- systemd服务自动安装和卸载
- Swagger自动生成API接口文档
# 许可授权 # 许可授权
WTFPL WTFPL
+1 -1
View File
@@ -6,7 +6,7 @@ plugins {
} }
group = "xyz.thewhitedog9487" group = "xyz.thewhitedog9487"
version = "0.2.0" version = "0.3.0"
java { java {
toolchain { toolchain {
@@ -18,7 +18,6 @@ public class LogClientInfo extends OncePerRequestFilter {
@Override @Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { 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("接收到对于{} {} 的请求", request.getMethod(), request.getRequestURL() + ( ( request.getQueryString() == null ) ? "" : "?" + request.getQueryString() ) );
log.info("请求ID{}", request.getRequestId());
if ( request.getHeader("CF-Connecting-IP".toLowerCase() ) instanceof String IP ) { if ( request.getHeader("CF-Connecting-IP".toLowerCase() ) instanceof String IP ) {
/* /*
↑ 如果成功完成instanceof模式匹配,那么模式变量一定非空 ↑ 如果成功完成instanceof模式匹配,那么模式变量一定非空
@@ -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"); } } }
+5 -1
View File
@@ -5,4 +5,8 @@ spring:
virtual: virtual:
enabled: true enabled: true
server: server:
port: 36987 port: 36987
logging:
pattern:
level: "%5p %X{RequestID}"
# https://docs.spring.io/spring-boot/reference/features/logging.html#features.logging.custom-log-configuration