springboot切⾯⽅式配置,记录⽅法调⽤⽇志,出⼊参记录我刚开始的时候将⽇志记录放在的controller ⽅法执⾏前后,但是每个⽅法都要重新写,代码量增多。
后来了解到环绕增强(@Around)是对⽅法执⾏前后做⼀定的业务,那⽤来做⽇志收集岂不是天造地设的⼀对⼉。
下⾯是代码:
import com.yang.springbootdemo2.utils.AESUtil;
import com.yang.springbootdemo2.utils.IMoocJSONResult;
import net.sf.json.JSONObject;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
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.springframework.stereotype.Component;
/**
* @Title:
* @author: Mr.yang
* @date: 20210223$
*/
@Aspect
@Component
public class InterceptorConfig {
private static Logger logger2 = Logger(InterceptorConfig.class);
@Pointcut("execution(public * com.ller..*(..))")
public void methodAround(){
}
@Around(value = "methodAround()")
public Object doAfterReturning(ProceedingJoinPoint point) throws Throwable {
//获取类路径+⽅法名
String targetMethodName = Target().getClass().getName()+"."+Signature().getName();
//获取传⼊的参数
Object[] args = Args();
StringBuilder stringBuilder = new StringBuilder();
for (Object pojo : args){
//这⾥怕取错了参数后⾯逻辑报错做了判断
if(pojo instanceof String) {
springboot切换log4j2//拿到前台传的参数,并对其进⾏解密输出操作
String requestJson = AESUtil.decrypt(JSONObject.String()).get("requestParam").toString());
stringBuilder.append("parameterValue:").append(requestJson);
}
}
//记录⽅法访问⽇志
logger2.info(targetMethodName+"⽅法开始执⾏,⼊参为:"+String());
Object result = point.proceed();
IMoocJSONResult imooresult = (IMoocJSONResult)result;
//记录⽅法返回⽇志
logger2.info(targetMethodName+"⽅法执⾏结束!返回参数:"+String());
return result;
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。