美文网首页
使用AOP统一日志处理

使用AOP统一日志处理

作者: zhanghanga | 来源:发表于2019-03-20 15:29 被阅读0次

为了防止在工作中经常在代码中加入大量的日志处理代码,在实际项目开发中,一般使用AOP统一完成日志处理工作

修改pom文件
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>

新增AOP日志处理类
@Aspect
@Component
public class WebLogAspect {

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

@Pointcut("execution(public * cn.enjoy.controller.*.*(..))")
public void webLog() {
}

@Before("webLog()")
public void doBefore(JoinPoint joinPoint) throws Throwable {
    // 接收到请求,记录请求内容
    ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
    HttpServletRequest request = attributes.getRequest();
    // 记录下请求内容
    logger.info("URL : " + request.getRequestURL().toString());
    logger.info("HTTP_METHOD : " + request.getMethod());
    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 = "ret", pointcut = "webLog()")
public void doAfterReturning(Object ret) throws Throwable {
    // 处理完请求,返回内容
    logger.info("RESPONSE : " + ret);
}

}

相关文章

  • Spring Boot中使用log4j实现http请求日志入mo

    之前在《使用AOP统一处理Web请求日志》一文中介绍了如何使用AOP统一记录web请求日志。基本思路是通过aop去...

  • spring AOP应用场景

    Spring Boot中使用AOP统一处理Web请求日志 AOP为Aspect Oriented Programm...

  • SpringBoot-AOP

    SpringBoot-AOP 使用AOP统一处理请求日志 1.AOP的概念 AOP:AOP是一种编程范式,与语言无...

  • 2020-02-01

    26,Spring Boot中使用AOP统一处理Web请求日志 1,引入jar