/**
* 开发时请求数据显示
* @author xxm
* @date 2019/1/5 11:16
* @version V1.0
*/
@Aspect
@Component
@ConditionalOnProperty(name = "dev.webLog", havingValue = "true")
public class WebLogAspect {
private static final Logger logger = LoggerFactory.getLogger(WebLogAspect.class);
//扫描controller中的请求
@Pointcut("execution( * *..controller.*.*(..))")
public void logPointCut() {
}
/**
* 显示请求时数据
*/
@Before("logPointCut()")
public void doBefore(JoinPoint joinPoint) throws Throwable {
// 接收到请求,记录请求内容
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
// 记录下请求内容
logger.debug(request.getMethod()+" 请求 : " + request.getRequestURL().toString());
// 获取真实的ip地址
// logger.info("IP : " + IPAddressUtil.getClientIpAddress(request));
logger.info("CLASS_METHOD : " + joinPoint.getSignature().getDeclaringTypeName() + "."
+ joinPoint.getSignature().getName());
logger.debug("参数 : " + Arrays.toString(joinPoint.getArgs()));
// loggger.info("参数 : " + joinPoint.getArgs());
}
/**
* 显示请求完成的返回值
* returning的值和doAfterReturning的参数名一致
*/
@AfterReturning(returning = "ret", pointcut = "logPointCut()")
public void doAfterReturning(Object ret) {
// 处理完请求,返回内容(返回值太复杂时,打印的是物理存储空间的地址)
logger.debug("返回值 : " + ret);
}
/**
* 显示请求耗时
*/
@Around("logPointCut()")
public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
long startTime = System.currentTimeMillis();
// ob 为方法的返回值
Object ob = pjp.proceed();
logger.debug("耗时 : " + (System.currentTimeMillis() - startTime));
return ob;
}
}
转载于:https://my.oschina.net/u/2555967/blog/3016494