转自:
http://www.java265.com/JavaCourse/202201/2144.html
下文笔者讲述springboot中使用log4j处理请求日志的方法分享,如下所示:
在日常项目中,我们经常需为一个项目制作一个统一的请求日志处理器, 实时监控项目的进出信息,那么springboot如何制作一个统一的日志请求处理呢? 下文将一一道来,如下所示:
步骤一、springboot集成log4j
springboot配置集成log4j
步骤二、导入AOP依赖
<!-- AOP --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>
WebLogAspect切面类
@Aspect @Component//配置bean public class WebLogAspect { private Logger logger = Logger.getLogger(getClass()); @Pointcut(\"execution(public * com.java265.controller..*.*(..))\") public void webLog() { } @Before(\"webLog()\") public void doBefore(JoinPoint joinPoint) throws Throwable { // 接收到请求,记录请求内容 ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = attributes.getRequest(); // 记录下请求内容 logger.info(\"---------------request----------------\"); logger.info(\"URL : \" + request.getRequestURL().toString()); logger.info(\"HTTP_METHOD : \" + request.getMethod()); logger.info(\"IP : \" + request.getRemoteAddr()); Enumerationenu = request.getParameterNames(); while (enu.hasMoreElements()) { String name = (String) enu.nextElement(); logger.info(\"name:\" + name + \" - value:\" + request.getParameter(name)); } } @AfterReturning(returning = \"ret\", pointcut = \"webLog()\") public void doAfterReturning(Object ret) throws Throwable { logger.info(\"---------------response----------------\"); // 处理完请求,返回内容 logger.info(\"RESPONSE : \" + ret); logger.info(\"花费时间 : \" + (System.currentTimeMillis() - startTime.get()) + \"毫秒\"); } }
使用@Pointcut定义切入点 此处是com.java265.controller包下的所有Controller 对controller层所有请求处理做切入点 然后通过@Before实现对请求内容的日志记录 最后通过@AfterReturning记录请求返回的对象 采用以上的方式,可以为所有的controller加上运行日志
来源:https://www.cnblogs.com/java265/p/16530939.html
本站部分图文来源于网络,如有侵权请联系删除。