ToB企服应用市场:ToB评测及商务社交产业平台

标题: springboot中如何使用log4j制作统一的请求日志呢? [打印本页]

作者: 惊雷无声    时间: 2022-9-4 01:46
标题: springboot中如何使用log4j制作统一的请求日志呢?
转自:
http://www.java265.com/JavaCourse/202201/2144.html
下文笔者讲述springboot中使用log4j处理请求日志的方法分享,如下所示:
  1. 在日常项目中,我们经常需为一个项目制作一个统一的请求日志处理器,
  2. 实时监控项目的进出信息,那么springboot如何制作一个统一的日志请求处理呢?
  3. 下文将一一道来,如下所示:
复制代码
步骤一、springboot集成log4j

springboot配置集成log4j
步骤二、导入AOP依赖
  1. <dependency>
  2.   <groupId>org.springframework.boot</groupId>
  3.   <artifactId>spring-boot-starter-aop</artifactId>
  4. </dependency>
复制代码
WebLogAspect切面类
  1. @Aspect
  2. @Component//配置bean
  3. public class WebLogAspect {
  4.     private Logger logger = Logger.getLogger(getClass());
  5.     @Pointcut("execution(public * com.java265.controller..*.*(..))")
  6.     public void webLog() {
  7.     }
  8.     @Before("webLog()")
  9.     public void doBefore(JoinPoint joinPoint) throws Throwable {
  10.         // 接收到请求,记录请求内容
  11.         ServletRequestAttributes attributes = (ServletRequestAttributes)
  12.                         RequestContextHolder.getRequestAttributes();
  13.         HttpServletRequest request = attributes.getRequest();
  14.         // 记录下请求内容
  15.         logger.info("---------------request----------------");
  16.         logger.info("URL : " + request.getRequestURL().toString());
  17.         logger.info("HTTP_METHOD : " + request.getMethod());
  18.         logger.info("IP : " + request.getRemoteAddr());
  19.         Enumerationenu = request.getParameterNames();
  20.         while (enu.hasMoreElements()) {
  21.             String name = (String) enu.nextElement();
  22.             logger.info("name:" + name + " - value:" + request.getParameter(name));
  23.         }
  24.     }
  25.     @AfterReturning(returning = "ret", pointcut = "webLog()")
  26.     public void doAfterReturning(Object ret) throws Throwable {
  27.         logger.info("---------------response----------------");
  28.         // 处理完请求,返回内容
  29.         logger.info("RESPONSE : " + ret);
  30.         logger.info("花费时间 : " + (System.currentTimeMillis() - startTime.get()) + "毫秒");
  31.     }
  32. }
复制代码
  1.   使用@Pointcut定义切入点
  2.   此处是com.java265.controller包下的所有Controller
  3.     对controller层所有请求处理做切入点
  4.    然后通过@Before实现对请求内容的日志记录
  5.    最后通过@AfterReturning记录请求返回的对象
  6.   
  7.   采用以上的方式,可以为所有的controller加上运行日志
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4