From 1b06913ce4a7a8d65e6508987fbaaad9eb789607 Mon Sep 17 00:00:00 2001 From: "1437892690@qq.com" <1437892690@qq.com> Date: Fri, 27 Jun 2025 10:57:23 +0800 Subject: [PATCH] =?UTF-8?q?[=E4=BF=AE=E5=A4=8D]=20NeatLogicThread=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E6=97=B6=E8=8E=B7=E5=8F=96=E5=88=B0=E5=B7=B2=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E7=9A=84request=E5=AF=B9=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 关联 #[1452779552342016]NeatLogicThread执行时获取到已关闭的request对象 http://192.168.0.96:8090/demo/rdm.html#/bug-detail/939050947543040/939050947543057/1452779552342016 --- .../threadlocal/RequestContext.java | 22 +++++++++++------ .../converter/RequestUrlConverter.java | 24 +++---------------- .../logback/converter/TenantConverter.java | 13 ++++------ 3 files changed, 22 insertions(+), 37 deletions(-) diff --git a/src/main/java/neatlogic/framework/asynchronization/threadlocal/RequestContext.java b/src/main/java/neatlogic/framework/asynchronization/threadlocal/RequestContext.java index 70529a64a..84907aa3c 100644 --- a/src/main/java/neatlogic/framework/asynchronization/threadlocal/RequestContext.java +++ b/src/main/java/neatlogic/framework/asynchronization/threadlocal/RequestContext.java @@ -34,6 +34,7 @@ public class RequestContext implements Serializable { private static final ThreadLocal instance = new ThreadLocal<>(); private static final long serialVersionUID = -5420998728515359626L; private String url; + private String remoteAddr; private HttpServletRequest request; private HttpServletResponse response; //接口访问拒绝来源,租户或接口 @@ -55,6 +56,14 @@ public class RequestContext implements Serializable { this.url = url; } + public String getRemoteAddr() { + return remoteAddr; + } + + public void setRemoteAddr(String remoteAddr) { + this.remoteAddr = remoteAddr; + } + public HttpServletRequest getRequest() { return request; } @@ -121,16 +130,14 @@ public class RequestContext implements Serializable { context.setUrl(_requestContext.getUrl()); context.setLocale(_requestContext.getLocale()); context.setSqlAuditList(_requestContext.getSqlAuditList()); + context.setRemoteAddr(_requestContext.getRemoteAddr()); String tempUrl = _requestContext.getUrl(); if (tempUrl == null) { tempUrl = StringUtils.EMPTY; } - HttpServletRequest request = _requestContext.getRequest(); - if (request != null) { - String remoteAddr = IpUtil.getIpAddr(request); - if (StringUtils.isNotBlank(remoteAddr)) { - tempUrl += "(" + remoteAddr + ")"; - } + String remoteAddr = _requestContext.getRemoteAddr(); + if (StringUtils.isNotBlank(remoteAddr)) { + tempUrl += "(" + remoteAddr + ")"; } MDC.put("url", tempUrl); } @@ -151,8 +158,9 @@ public class RequestContext implements Serializable { } } String tempUrl = url; - String remoteAddr = request.getRemoteAddr(); + String remoteAddr = IpUtil.getIpAddr(request); if (StringUtils.isNotBlank(remoteAddr)) { + context.setRemoteAddr(remoteAddr); tempUrl += "(" + remoteAddr + ")"; } MDC.put("url", tempUrl); diff --git a/src/main/java/neatlogic/framework/logback/converter/RequestUrlConverter.java b/src/main/java/neatlogic/framework/logback/converter/RequestUrlConverter.java index b006b3e75..bcd1beb76 100644 --- a/src/main/java/neatlogic/framework/logback/converter/RequestUrlConverter.java +++ b/src/main/java/neatlogic/framework/logback/converter/RequestUrlConverter.java @@ -17,10 +17,8 @@ package neatlogic.framework.logback.converter; import ch.qos.logback.classic.pattern.ClassicConverter; import ch.qos.logback.classic.spi.ILoggingEvent; -import neatlogic.framework.asynchronization.threadlocal.RequestContext; import org.apache.commons.lang3.StringUtils; -import javax.servlet.http.HttpServletRequest; import java.io.Serializable; import java.util.Map; @@ -39,26 +37,10 @@ public class RequestUrlConverter extends ClassicConverter implements Serializabl */ @Override public String convert(ILoggingEvent event) { - RequestContext requestContext = RequestContext.get(); - if (requestContext != null) { - String url = requestContext.getUrl(); - if (url == null) { - url = StringUtils.EMPTY; - } - HttpServletRequest request = requestContext.getRequest(); - if (request != null) { - String remoteAddr = request.getRemoteAddr(); - if (StringUtils.isNotBlank(remoteAddr)) { - url += "(" + remoteAddr + ")"; - } - } + Map map = event.getMDCPropertyMap(); + String url = map.get("url"); + if (StringUtils.isNotBlank(url)) { return url; - } else { - Map map = event.getMDCPropertyMap(); - String url = map.get("url"); - if (StringUtils.isNotBlank(url)) { - return url; - } } return StringUtils.EMPTY; } diff --git a/src/main/java/neatlogic/framework/logback/converter/TenantConverter.java b/src/main/java/neatlogic/framework/logback/converter/TenantConverter.java index dde5dbb9c..c0efe54bd 100644 --- a/src/main/java/neatlogic/framework/logback/converter/TenantConverter.java +++ b/src/main/java/neatlogic/framework/logback/converter/TenantConverter.java @@ -17,7 +17,6 @@ package neatlogic.framework.logback.converter; import ch.qos.logback.classic.pattern.ClassicConverter; import ch.qos.logback.classic.spi.ILoggingEvent; -import neatlogic.framework.asynchronization.threadlocal.TenantContext; import org.apache.commons.lang3.StringUtils; import java.io.Serializable; @@ -38,14 +37,10 @@ public class TenantConverter extends ClassicConverter implements Serializable { */ @Override public String convert(ILoggingEvent event) { - if (StringUtils.isNotBlank(TenantContext.get().getTenantUuid())) { - return TenantContext.get().getTenantUuid(); - } else { - Map map = event.getMDCPropertyMap(); - String tenant = map.get("tenant"); - if (StringUtils.isNotBlank(tenant)) { - return tenant; - } + Map map = event.getMDCPropertyMap(); + String tenant = map.get("tenant"); + if (StringUtils.isNotBlank(tenant)) { + return tenant; } return StringUtils.EMPTY; } -- Gitee