From 3cca0138f0396b5ca51c06ad389187f4678ce838 Mon Sep 17 00:00:00 2001 From: LuWenhui <1265400024@qq.com> Date: Fri, 4 Nov 2016 16:44:00 +0800 Subject: [PATCH] =?UTF-8?q?=EF=BC=88=E5=8D=81=E4=B8=80=EF=BC=89=E4=BD=BF?= =?UTF-8?q?=E7=94=A8AOP=EF=BC=8C@Aspect=E7=BB=9F=E4=B8=80=E5=A4=84?= =?UTF-8?q?=E7=90=86Web=E8=AF=B7=E6=B1=82=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../training/core/aspect/WebLogAspect.java | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 src/main/java/com/training/core/aspect/WebLogAspect.java diff --git a/src/main/java/com/training/core/aspect/WebLogAspect.java b/src/main/java/com/training/core/aspect/WebLogAspect.java new file mode 100644 index 0000000..92e5d6f --- /dev/null +++ b/src/main/java/com/training/core/aspect/WebLogAspect.java @@ -0,0 +1,63 @@ +package com.training.core.aspect; + +import org.apache.log4j.Logger; +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.AfterReturning; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.aspectj.lang.annotation.Pointcut; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; + +/** + * Web层日志切面 + * + * @author 程序猿DD + * @version 1.0.0 + * @date 16/5/17 上午10:42. + * @blog http://blog.didispace.com + */ +@Aspect +@Order(5) +@Component +public class WebLogAspect { + + private Logger logger = Logger.getLogger(getClass()); + + ThreadLocal startTime = new ThreadLocal<>(); + + @Pointcut("execution(public * com.didispace.web..*.*(..))") + public void webLog(){} + + @Before("webLog()") + public void doBefore(JoinPoint joinPoint) throws Throwable { + startTime.set(System.currentTimeMillis()); + + // 接收到请求,记录请求内容 + ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + HttpServletRequest request = attributes.getRequest(); + + // 记录下请求内容 + logger.info("URL : " + request.getRequestURL().toString()); + logger.info("HTTP_METHOD : " + request.getMethod()); + logger.info("IP : " + request.getRemoteAddr()); + logger.info("CLASS_METHOD : " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName()); + logger.info("ARGS : " + Arrays.toString(joinPoint.getArgs())); + + } + + @AfterReturning(returning = "ret", pointcut = "webLog()") + public void doAfterReturning(Object ret) throws Throwable { + // 处理完请求,返回内容 + logger.info("RESPONSE : " + ret); + logger.info("SPEND TIME : " + (System.currentTimeMillis() - startTime.get())); + } + + +} +