
cool.linco.common.log.method.Executor Maven / Gradle / Ivy
package cool.linco.common.log.method;
import cool.linco.common.log.handle.DefaultMethodLogHandler;
import cool.linco.common.log.handle.IMethodLogHandler;
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.aspectj.lang.reflect.MethodSignature;
import org.slf4j.event.Level;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* @author lin
* 执行runningLog注解
*/
@Aspect //该注解标示该类为切面类
@Component //注入依赖
public class Executor {
@ConditionalOnMissingBean(IMethodLogHandler.class)
@Bean
public IMethodLogHandler defaultLogDataHandler() {
return new DefaultMethodLogHandler();
}
@Resource
IMethodLogHandler methodLogHandler;
@Pointcut("execution(* *(..))&&@annotation(cool.linco.common.log.method.RunningLog)")
public void log() {}
@Around("log() && @annotation(runningLog)")
public Object around(ProceedingJoinPoint joinPoint, RunningLog runningLog) throws Throwable {
// 提前确认以减少计算
Level logLevel = runningLog.logLevel();
if (!methodLogHandler.isLogEnabled(logLevel)) {
return joinPoint.proceed();
}
Object[] paramsValues = joinPoint.getArgs();
Signature signature = joinPoint.getSignature();
MethodSignature methodSignature = (MethodSignature) signature;
String[] paramsNames = methodSignature.getParameterNames();
String method = methodSignature.getName();
String clazz = methodSignature.getDeclaringTypeName();
methodLogHandler.logOnEntry(clazz, method, paramsNames, paramsValues, logLevel);
long startTime = System.currentTimeMillis();
Object result = joinPoint.proceed();
long time = System.currentTimeMillis() - startTime;
methodLogHandler.logOnExit(clazz, method, paramsNames, paramsValues, time, result, logLevel);
return result;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy