springboot中如何使用log4j制作统一的请求日志呢?
下文笔者讲述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加上运行日志
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


