aop实现打印相关日志信息2
现拿现用, 切入点改改就能用
package xxx import com.alibaba.fastjson.JSON; import lombok.Data; 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.stereotype.Component; import xxx.framework.exception.BusinessException; /** * @author goujh * @date 2020/10/9 13:50 */ @Component @Aspect @Slf4j public class FeignAop { private final String pointcutFeign = "execution(* xxx.*(..))"; @Pointcut(value = pointcutFeign) public void logFeign() {} @Around(value = "logFeign()") public Object aroundFeign(ProceedingJoinPoint joinPoint) { Object proceed = null; FeignInfo feignInfo = new FeignInfo(); MethodSignature methodSignature = null; long start = System.currentTimeMillis(); try { methodSignature = (MethodSignature) joinPoint.getSignature(); feignInfo.setRequestClass(methodSignature.getDeclaringTypeName()); // 调用方法 feignInfo.setRequestMethod(methodSignature.getMethod().getName()); // 请求数据 feignInfo.setRequestParam(JSON.toJSONString(joinPoint.getArgs())); } catch (Exception e) { e.printStackTrace(); } try { proceed = joinPoint.proceed(); feignInfo.setResponseResult(JSON.toJSONString(proceed)); feignInfo.setResponseTime(System.currentTimeMillis() - start); log.info( "\n=====================feign访问请求信息:===============================================================================\n" + "=====================请求类: "+feignInfo.getRequestClass()+"\n" + "=====================请求方法: "+feignInfo.getRequestMethod()+"\n" + "=====================请求参数: "+feignInfo.getRequestParam()+"\n" + "=====================响应结果: "+feignInfo.getResponseResult()+"\n" + "=====================消耗时长: "+feignInfo.getResponseTime()+"毫秒\n" + "==============================================================================================================="); } catch (Throwable e) { feignInfo.setResponseTime(System.currentTimeMillis() - start); feignInfo.setErrorMessage(e.getMessage()); log.info( "\n=====================feign访问请求信息:===============================================================================\n" + "=====================请求类:"+feignInfo.getRequestClass()+"\n" + "=====================请求方法:"+feignInfo.getRequestMethod()+"\n" + "=====================请求参数:"+feignInfo.getRequestParam()+"\n" + "=====================响应结果:"+feignInfo.getResponseResult()+"\n" + "=====================消耗时长:"+feignInfo.getResponseTime()+"毫秒\n" + "=====================错误信息:"+feignInfo.getErrorMessage()+"\n" + "==============================================================================================================="); if (e.getCause() != null && e.getCause().getMessage() != null) { throw new BusinessException(e.getMessage() +" Caused by: " + e.getCause().getMessage()); } else { throw new BusinessException(e.getMessage()); } } return proceed; } } @Data class FeignInfo{ private String requestClass; private String requestMethod; private String requestParam; private String responseResult; private long responseTime; private String errorMessage; }