From de66f4361608b5169b17be6f49233b3bb29f3713 Mon Sep 17 00:00:00 2001 From: BlackR <413626226@qq.com> Date: Fri, 20 May 2022 13:46:02 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20Fixing=20a=20bug.=20log=20insert=20spel?= =?UTF-8?q?=20=E6=89=A7=E8=A1=8C=E6=8A=A5=E9=94=99.=20:sparkles:=20Introdu?= =?UTF-8?q?cing=20new=20features.=20support=20spel=20'expression'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pig4cloud/pigx/common/log/annotation/SysLog.java | 6 ++++++ .../pigx/common/log/aspect/SysLogAspect.java | 11 +++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/pigx-common/pigx-common-log/src/main/java/com/pig4cloud/pigx/common/log/annotation/SysLog.java b/pigx-common/pigx-common-log/src/main/java/com/pig4cloud/pigx/common/log/annotation/SysLog.java index 884991e32..5f9375c8b 100644 --- a/pigx-common/pigx-common-log/src/main/java/com/pig4cloud/pigx/common/log/annotation/SysLog.java +++ b/pigx-common/pigx-common-log/src/main/java/com/pig4cloud/pigx/common/log/annotation/SysLog.java @@ -36,4 +36,10 @@ public @interface SysLog { */ String value(); + /** + * spel 表达式 + * @return 日志描述 + */ + String expression() default ""; + } diff --git a/pigx-common/pigx-common-log/src/main/java/com/pig4cloud/pigx/common/log/aspect/SysLogAspect.java b/pigx-common/pigx-common-log/src/main/java/com/pig4cloud/pigx/common/log/aspect/SysLogAspect.java index 78dcec15a..1e1a81374 100644 --- a/pigx-common/pigx-common-log/src/main/java/com/pig4cloud/pigx/common/log/aspect/SysLogAspect.java +++ b/pigx-common/pigx-common-log/src/main/java/com/pig4cloud/pigx/common/log/aspect/SysLogAspect.java @@ -58,11 +58,18 @@ public class SysLogAspect { log.debug("[类名]:{},[方法]:{}", strClassName, strMethodName); String value = sysLog.value(); - if (StrUtil.isNotBlank(value)) { + String expression = sysLog.expression(); + // 当前表达式存在 SPEL,会覆盖 value 的值 + if (StrUtil.isNotBlank(expression)) { // 解析SPEL MethodSignature signature = (MethodSignature) point.getSignature(); EvaluationContext context = SysLogUtils.getContext(point.getArgs(), signature.getMethod()); - value = SysLogUtils.getValue(context, value, String.class); + try { + value = SysLogUtils.getValue(context, expression, String.class); + } catch (Exception e) { + // SPEL 表达式异常,则获取 value 的值 + log.error("@SysLog 解析SPEL {} 异常", expression); + } } SysLogDTO logDTO = SysLogUtils.getSysLog();