From 122a1738bd562186e055f9e22bab6ab31a53e022 Mon Sep 17 00:00:00 2001 From: lirui Date: Mon, 24 Nov 2025 17:37:37 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=97=A5=E5=BF=97?= =?UTF-8?q?=EF=BC=8C=E5=90=8E=E9=9D=A2=E5=87=86=E5=A4=87=E6=8B=86=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/framework/annotation/SysLog.java | 23 +++++++++++++ .../framework/aspect/SysLogAspect.java | 32 +++++++++++++++++++ .../framework/log/utils/SysLogUtils.java | 4 +++ pom.xml | 5 ++- 4 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 aioj-backend-common/src/main/java/cn/meowrain/aioj/backend/framework/annotation/SysLog.java create mode 100644 aioj-backend-common/src/main/java/cn/meowrain/aioj/backend/framework/aspect/SysLogAspect.java create mode 100644 aioj-backend-common/src/main/java/cn/meowrain/aioj/backend/framework/log/utils/SysLogUtils.java diff --git a/aioj-backend-common/src/main/java/cn/meowrain/aioj/backend/framework/annotation/SysLog.java b/aioj-backend-common/src/main/java/cn/meowrain/aioj/backend/framework/annotation/SysLog.java new file mode 100644 index 0000000..69d8d5b --- /dev/null +++ b/aioj-backend-common/src/main/java/cn/meowrain/aioj/backend/framework/annotation/SysLog.java @@ -0,0 +1,23 @@ +package cn.meowrain.aioj.backend.framework.annotation; + +import java.lang.annotation.*; + +/** + * 系统日志注解 + */ +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface SysLog { + /** + * 描述 + * @return {@link String} + */ + String value() default ""; + + /** + * Spel表达式 + * @return 日志描述 + */ + String expression() default ""; +} diff --git a/aioj-backend-common/src/main/java/cn/meowrain/aioj/backend/framework/aspect/SysLogAspect.java b/aioj-backend-common/src/main/java/cn/meowrain/aioj/backend/framework/aspect/SysLogAspect.java new file mode 100644 index 0000000..217b170 --- /dev/null +++ b/aioj-backend-common/src/main/java/cn/meowrain/aioj/backend/framework/aspect/SysLogAspect.java @@ -0,0 +1,32 @@ +package cn.meowrain.aioj.backend.framework.aspect; + +import cn.hutool.core.util.StrUtil; +import cn.meowrain.aioj.backend.framework.annotation.SysLog; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.aspectj.lang.reflect.MethodSignature; +import org.springframework.expression.EvaluationContext; + +@Aspect +@Slf4j +@RequiredArgsConstructor +public class SysLogAspect { + + @Around("@annotation(sysLog)") + public Object around(ProceedingJoinPoint joinPoint,SysLog sysLog) throws Throwable { + String strClassName = joinPoint.getTarget().getClass().getName(); + String strMethodName = joinPoint.getSignature().getName(); + log.debug("[类名]:{},[方法]:{}", strClassName, strMethodName); + String value = sysLog.value(); + String expression = sysLog.expression(); + if(StrUtil.isNotBlank(expression)) { + // 解析SPEL + MethodSignature signature = (MethodSignature) joinPoint.getSignature(); + EvaluationContext context = SysLogUtils.getContext(point.getArgs(), signature.getMethod()); + } + } +} diff --git a/aioj-backend-common/src/main/java/cn/meowrain/aioj/backend/framework/log/utils/SysLogUtils.java b/aioj-backend-common/src/main/java/cn/meowrain/aioj/backend/framework/log/utils/SysLogUtils.java new file mode 100644 index 0000000..ea0128b --- /dev/null +++ b/aioj-backend-common/src/main/java/cn/meowrain/aioj/backend/framework/log/utils/SysLogUtils.java @@ -0,0 +1,4 @@ +package cn.meowrain.aioj.backend.framework.log.utils; + +public class SysLogUtils { +} diff --git a/pom.xml b/pom.xml index 5e5f211..ad03473 100644 --- a/pom.xml +++ b/pom.xml @@ -33,7 +33,10 @@ 2025.0.0.0 - + + org.springframework.boot + spring-boot-starter-aop + cn.hutool