1.配置pom.xml 使用 spring-boot-starter-aop
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>
2.创建HttpAsp方法:实现打印日志跟踪
package com.imooc.student.aspect;
import org.aopalliance.intercept.Joinpoint;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
@Aspect
@Component
public class HttpAsp {
private static final Logger logger = LoggerFactory.getLogger(HttpAsp.class);
@Pointcut("execution(public * com.imooc.student.controller.GirlContenter.*(..))")
public void log(){
}
@Before("log()")
public void doBefor(JoinPoint joinpoint){
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
//url
logger.info("url={}", request.getRequestURL());
//method
logger.info("methode={}", request.getMethod());
//ip
logger.info("ip={}", request.getRemoteAddr());
//类方法
logger.info("class_methode={}", joinpoint.getSignature().getDeclaringTypeName()+"."+joinpoint.getSignature().getName());
//参数
logger.info("args={}", joinpoint.getArgs());
}
@After("log()")
public void doAfter(){
logger.info("2222222222");
}
@AfterReturning(returning = "object",pointcut = "log()")
public void doAfterReturing(Object object){
//返回参数信息
logger.info("response={}", object);
}
}
3.控制台打印输出:
2018-07-05 20:52:42.821 INFO 6728 --- [nio-8080-exec-1] com.imooc.student.aspect.HttpAsp : url=http://localhost:8080/girls/1
2018-07-05 20:52:42.821 INFO 6728 --- [nio-8080-exec-1] com.imooc.student.aspect.HttpAsp : methode=GET
2018-07-05 20:52:42.821 INFO 6728 --- [nio-8080-exec-1] com.imooc.student.aspect.HttpAsp : ip=0:0:0:0:0:0:0:1
2018-07-05 20:52:42.822 INFO 6728 --- [nio-8080-exec-1] com.imooc.student.aspect.HttpAsp : class_methode=com.imooc.student.controller.GirlContenter.girlFindOne
2018-07-05 20:52:42.822 INFO 6728 --- [nio-8080-exec-1] com.imooc.student.aspect.HttpAsp : args=1
Hibernate: select girl0_.id as id1_0_0_, girl0_.address as address2_0_0_, girl0_.age as age3_0_0_, girl0_.cup_size as cup_size4_0_0_ from girl girl0_ where girl0_.id=?
2018-07-05 20:52:42.860 INFO 6728 --- [nio-8080-exec-1] com.imooc.student.aspect.HttpAsp : 2222222222
2018-07-05 20:52:42.860 INFO 6728 --- [nio-8080-exec-1] com.imooc.student.aspect.HttpAsp : response=Girl{id=1, cupSize='66', age=19, address='6'}