ToB企服应用市场:ToB评测及商务社交产业平台
标题:
springboot中如何使用log4j制作统一的请求日志呢?
[打印本页]
作者:
惊雷无声
时间:
2022-9-4 01:46
标题:
springboot中如何使用log4j制作统一的请求日志呢?
转自:
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加上运行日志
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4