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