Java教程

使用拦截器和Aop在控制台 日志打印请求参数和请求路径等信息

本文主要是介绍使用拦截器和Aop在控制台 日志打印请求参数和请求路径等信息,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、使用拦截器在控制台日志打印请求参数和请求路径等信息

public class GlobalRequestInterceptor implements HandlerInterceptor {
    private static final Logger log = LoggerFactory.getLogger(GlobalRequestInterceptor.class);

    public GlobalRequestInterceptor() {
    }

    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        CgmUser user = SecurityUtils.getUser();
        log.info("用户信息:{}", ObjectUtil.isNull(user) ? "用户未登录" : String.format("uid=%s;phone=%s;username=%s", user.getId(), user.getPhone(), user.getUsername()));
        log.info("请求地址:[{}]-[{}]", request.getMethod(), request.getRequestURL());
        log.info("GET请求参数:[{}]", request.getQueryString());
        log.info("控制层:[{}]", handler);
        return true;
    }
}

二、使用Aop在控制台 日志打印请求参数和请求路径等信息

@Aspect
@Component
@Slf4j
public class LogAspect {
	
    @Pointcut("execution(public * com.cgmcomm.cgm.admin.controller.*.*(..))")
    public void requestAspect(){}

    @Before(value = "requestAspect()")
    public void methodBefore(JoinPoint joinPoint){
        ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = requestAttributes.getRequest();
        //打印请求内容
        //获取当前登录人,util可以自己写
log.info("用户信息:{}", ObjectUtil.isNull(SecurityUtils.getUser()) ? "用户未登录" : String.format("uid=%s;phone=%s;username=%s", user.getId(), user.getPhone(), user.getUsername()));
//        log.info("请求ip:"+request.getRemoteAddr());
        log.info("请求地址:{},请求方式:{},请求类方法:{},请求类方法参数:{}" ,
                request.getRequestURL().toString(),request.getMethod(),
                joinPoint.getSignature(),Arrays.toString(joinPoint.getArgs()));
    }
    //在方法执行完结后打印返回内容
    @AfterReturning(returning = "o",pointcut = "requestAspect()")
    public void methodAfterReturing(Object o ){
        log.info("返回数据:{}" , JSONObject.toJSONString(o));
    }
}
这篇关于使用拦截器和Aop在控制台 日志打印请求参数和请求路径等信息的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!