Spring Boot AOP统一处理Web请求日志

1.pom.xml 新增依赖

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

2.新建LogAspect类

@Aspect
@Component
public class LogAspect {

    private static final Logger logger = LoggerFactory.getLogger(LogAspect.class);

    @Pointcut("execution(public * com.example.hello..controller.*.*(..))")
    public void Log() {
    }

    @Before("Log()")
    public void doBefore(JoinPoint joinPoint) throws Throwable {
        // 接收到请求,记录请求内容
        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = attributes.getRequest();
        // 记录下请求内容
        logger.info("===============请求内容satrt===============");
        logger.info("请求地址 : " + request.getRequestURL().toString());
        logger.info("请求方式 : " + request.getMethod());
        logger.info( "请求类 : " + joinPoint.getSignature().getDeclaringTypeName());
        logger.info( "请求类中方法名 : " + joinPoint.getSignature().getName());
        logger.info("IP : " + request.getRemoteAddr());
        Enumeration<String> enu = request.getParameterNames();
        while (enu.hasMoreElements()) {
            String name = (String) enu.nextElement();
            logger.info("name:{},value:{}", name, request.getParameter(name));
        }
    }

    @AfterReturning(returning = "object", pointcut = "Log()")
    public void doAfterReturning(Object object) throws Throwable {
        // 处理完请求,返回内容
        logger.info("--------------返回内容start----------------");
        logger.info("RESPONSE内容:" + object);
        logger.info("--------------返回内容end----------------");
    }
}

3.测试结果

发布了50 篇原创文章 · 获赞 25 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/zhaolinxuan1/article/details/82757353