From fa86addc49b61720586b8d6c6831c47537fc4d1a Mon Sep 17 00:00:00 2001 From: "Ray.Hao" <1490493387@qq.com> Date: Wed, 21 May 2025 15:39:24 +0800 Subject: [PATCH] =?UTF-8?q?fix(log):=20=E4=BF=AE=E5=A4=8D=E9=80=80?= =?UTF-8?q?=E5=87=BA=E7=99=BB=E5=BD=95=E6=97=A5=E5=BF=97=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E8=8E=B7=E5=8F=96=E6=93=8D=E4=BD=9C=E4=BA=BA?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/youlai/boot/core/aspect/LogAspect.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/youlai/boot/core/aspect/LogAspect.java b/src/main/java/com/youlai/boot/core/aspect/LogAspect.java index f39a7562..40526ead 100644 --- a/src/main/java/com/youlai/boot/core/aspect/LogAspect.java +++ b/src/main/java/com/youlai/boot/core/aspect/LogAspect.java @@ -60,6 +60,9 @@ public class LogAspect { */ @Around("logPointcut() && @annotation(logAnnotation)") public Object doAround(ProceedingJoinPoint joinPoint, com.youlai.boot.common.annotation.Log logAnnotation) throws Throwable { + // 在方法执行前获取用户ID,避免在方法执行过程中清除上下文导致获取不到用户ID + Long userId = SecurityUtils.getUserId(); + TimeInterval timer = DateUtil.timer(); Object result = null; Exception exception = null; @@ -71,7 +74,7 @@ public class LogAspect { throw e; } finally { long executionTime = timer.interval(); // 执行时长 - this.saveLog(joinPoint, exception, result, logAnnotation, executionTime); + this.saveLog(joinPoint, exception, result, logAnnotation, executionTime, userId); } return result; } @@ -84,8 +87,9 @@ public class LogAspect { * @param e 异常 * @param jsonResult 响应结果 * @param logAnnotation 日志注解 + * @param userId 用户ID */ - private void saveLog(final JoinPoint joinPoint, final Exception e, Object jsonResult, com.youlai.boot.common.annotation.Log logAnnotation, long executionTime) { + private void saveLog(final JoinPoint joinPoint, final Exception e, Object jsonResult, com.youlai.boot.common.annotation.Log logAnnotation, long executionTime, Long userId) { String requestURI = request.getRequestURI(); // 创建日志记录 Log log = new Log(); @@ -108,7 +112,6 @@ public class LogAspect { } } log.setRequestUri(requestURI); - Long userId = SecurityUtils.getUserId(); log.setCreateBy(userId); String ipAddr = IPUtils.getIpAddr(request); if (StrUtil.isNotBlank(ipAddr)) {