基于 aop service层参数log
基于 aop service层参数log
import cn.hutool.json.JSONUtil;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.Signature;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class ServiceLogAspect {
private static final Logger log = LoggerFactory.getLogger(ServiceLogAspect.class);
/**
* 以 controller 包下定义的所有请求为切入点
*/
@Pointcut("execution(public * com.example.demo.service.impl..*.*(..))")
public void serviceLog() {
}
/**
* 环绕
*
* @param proceedingJoinPoint 切入点
* @return
* @throws Throwable
*/
@Around("serviceLog()")
public Object doAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
Signature signature = proceedingJoinPoint.getSignature();
String methodName = signature.getName();
// 获取参数
Object[] args = proceedingJoinPoint.getArgs();
log.info("开始<{}>数据:{}", methodName, JSONUtil.toJsonStr(args));
Object result = proceedingJoinPoint.proceed();
log.info("结束<{}>数据:{}", methodName, result);
return result;
}
}

浙公网安备 33010602011771号