本文主要是介绍使用拦截器和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在控制台 日志打印请求参数和请求路径等信息的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!