スプリングブックはHttpアクセスログを記録しています(簡単入門2)
3086 ワード
一.記録要求情報
ハローController.java
1.方法の実行順序:@Before>aa()@After>@AfterReturning
2.logger.info(「url={}」、request.get Request URL();ここで{}は変数として理解され、request.get Request URL()はその変数の値として理解される。
@Aspect
@Component
public class HttpAspect {
private static final Logger logger = LoggerFactory.getLogger(HttpAspect.class);
/**
*
*/
@Pointcut("execution(public * com.kafei.HelloController.*(..))")
public void log() {}
/**
*
* @param joinPoint
* : HttpServletRequest javax.servlet.http.HttpServletRequest;
*/
@Before("log()")
public void doBefore(JoinPoint joinPoint) {
logger.info("1");
ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
// url
logger.info("url={}",request.getRequestURL());
// method
logger.info("method={}",request.getMethod());
// ip
logger.info("ip={}",request.getRemoteAddr());
//
logger.info("class_method={}",joinPoint.getSignature().getDeclaringTypeName()+"."+joinPoint.getSignature().getName());
//
logger.info("args={}",joinPoint.getArgs());
}
@After("log()")
public void doAfter() {
logger.info("2");
}
@AfterReturning(returning = "obj",pointcut = "log()")
public void doAfterReturning(Object obj) {
logger.info("3");
logger.info("response={}",obj);
}
}
二.要求住所:http://127.0.0.1:8080/aa?id=100 ハローController.java
@RestController
public class HelloController {
@GetMapping("/aa")
public String aa(Girl girl) {
System.out.println("aa");
return "aa2";
}
}
四.結果2018-05-28 11:19:51.976 INFO 6084 --- [nio-8080-exec-1] com.kafei.aspect.HttpAspect : 1
2018-05-28 11:19:51.977 INFO 6084 --- [nio-8080-exec-1] com.kafei.aspect.HttpAspect : url=http://127.0.0.1:8080/aa
2018-05-28 11:19:51.978 INFO 6084 --- [nio-8080-exec-1] com.kafei.aspect.HttpAspect : method=GET
2018-05-28 11:19:51.978 INFO 6084 --- [nio-8080-exec-1] com.kafei.aspect.HttpAspect : ip=127.0.0.1
2018-05-28 11:19:51.980 INFO 6084 --- [nio-8080-exec-1] com.kafei.aspect.HttpAspect : class_method=com.kafei.HelloController.aa
2018-05-28 11:19:51.980 INFO 6084 --- [nio-8080-exec-1] com.kafei.aspect.HttpAspect : args=Girl{id=100, age=null}
aa
2018-05-28 11:19:51.985 INFO 6084 --- [nio-8080-exec-1] com.kafei.aspect.HttpAspect : 2
2018-05-28 11:19:51.985 INFO 6084 --- [nio-8080-exec-1] com.kafei.aspect.HttpAspect : 3
2018-05-28 11:19:51.985 INFO 6084 --- [nio-8080-exec-1] com.kafei.aspect.HttpAspect : response=aa2
五.まとめ1.方法の実行順序:@Before>aa()@After>@AfterReturning
2.logger.info(「url={}」、request.get Request URL();ここで{}は変数として理解され、request.get Request URL()はその変数の値として理解される。