开发时请求数据显示

/**
 * 开发时请求数据显示
 * @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;
    }
}
相关文章
相关标签/搜索