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();