日志中增加请求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
@@ -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模式匹配,那么模式变量一定非空
@@ -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:
enabled: true
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