為什么要通過(guò)AOP來(lái)統(tǒng)一處理日志,因?yàn)殡S著你項(xiàng)目的增大,方法增多,代碼量上來(lái)的時(shí)候,比如你有幾千個(gè)方法,你要打印日志,你要在幾千個(gè)方法上面都加上冗余的代碼logger.info(),讓你的代碼量瞬間提示幾千行,相信很多人都不想這樣去做,那么接下來(lái)講一個(gè)統(tǒng)一的處理方法:
成都創(chuàng)新互聯(lián)公司專(zhuān)注于江北企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城開(kāi)發(fā)。江北網(wǎng)站建設(shè)公司,為江北等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站設(shè)計(jì),專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)
springboot--使用AOP統(tǒng)一處理web請(qǐng)求日志,首先來(lái)添加下pom文件依賴(lài):
然后貼下代碼:
@Aspect@Component
br/>@Component
private static final Logger logger = LoggerFactory.getLogger(WebLogAspect.class);
@Pointcut("execution(public * com.itmayiedu.controller.*.*(..))")
public void webLog() {
}
//通過(guò)使用AOP的前置通知來(lái)攔截請(qǐng)求信息
@Before("webLog()")
public void doBefore(JoinPoint joinPoint) throws Throwable {
// 接收到請(qǐng)求,記錄請(qǐng)求內(nèi)容
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
// 記錄下請(qǐng)求內(nèi)容
logger.info("URL : " + request.getRequestURL().toString());
logger.info("HTTP_METHOD : " + request.getMethod());
logger.info("IP : " + request.getRemoteAddr());
Enumeration enu = request.getParameterNames();
while (enu.hasMoreElements()) {
String name = (String) enu.nextElement();
logger.info("name:{},value:{}", name, request.getParameter(name));
}
}
@AfterReturning(returning = "ret", pointcut = "webLog()")
public void doAfterReturning(Object ret) throws Throwable {
// 處理完請(qǐng)求,返回內(nèi)容
logger.info("RESPONSE : " + ret);
}
}