1, 在 pom.xml 中引入 aop 的 jar 包
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-aop</artifactId>
- </dependency>
2, 创建 webLogAspect 类
- package com.cppdy.log;
- import java.util.Enumeration;
- import javax.servlet.http.HttpServletRequest;
- import org.aspectj.lang.JoinPoint;
- import org.aspectj.lang.annotation.AfterReturning;
- import org.aspectj.lang.annotation.Aspect;
- import org.aspectj.lang.annotation.Before;
- import org.aspectj.lang.annotation.Pointcut;
- import org.springframework.stereotype.Component;
- import org.springframework.Web.context.request.RequestContextHolder;
- import org.springframework.Web.context.request.ServletRequestAttributes;
- @Aspect
- @Component
- public class WebLogAspect {
- @Pointcut("execution(public * com.cppdy.controller..*.*(..))")
- public void webLog() {
- }
- @Before("webLog()")
- public void doBefore(JoinPoint joinPoint) throws Throwable {
- // 接收到请求, 记录请求内容
- ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
- HttpServletRequest request = attributes.getRequest();
- // 记录下请求内容
- System.out.println("URL:" + request.getRequestURL().toString());
- System.out.println("HTTP_METHOD:" + request.getMethod());
- System.out.println("IP:" + request.getRemoteAddr());
- Enumeration<String> enu = request.getParameterNames();
- while (enu.hasMoreElements()) {
- String name = enu.nextElement();
- System.out.println("name:" + name + ",value:" + request.getParameter(name));
- }
- }
- @AfterReturning(returning="ret",pointcut="webLog()")
- public void doAfterReturning(Object ret)throws Throwable {
- // 处理完请求, 返回内容
- System.out.println("RESPONSE:"+ret);
- }
- }
3, 访问 login 方法测试全局日志管理功能
来源: http://www.bubuko.com/infodetail-2869386.html