转自:
http://www.java265.com/JavaCourse/202201/2144.html
下文笔者讲述springboot中使用log4j处理请求日志的方法分享,如下所示:- 在日常项目中,我们经常需为一个项目制作一个统一的请求日志处理器,
- 实时监控项目的进出信息,那么springboot如何制作一个统一的日志请求处理呢?
- 下文将一一道来,如下所示:
复制代码 步骤一、springboot集成log4j
springboot配置集成log4j
步骤二、导入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加上运行日志
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |