diff --git a/bootdo/src/main/java/com/bootdo/common/aspect/LogAspect.java b/bootdo/src/main/java/com/bootdo/common/aspect/LogAspect.java index fe5667a55b9e8ebea1bd1173cff60a86a9d1810e..00544ff9660ec70423bcdf2a9f4a3e4ada5c8461 100644 --- a/bootdo/src/main/java/com/bootdo/common/aspect/LogAspect.java +++ b/bootdo/src/main/java/com/bootdo/common/aspect/LogAspect.java @@ -15,6 +15,8 @@ import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; @@ -31,10 +33,12 @@ import com.bootdo.system.domain.UserDO; @Aspect @Component public class LogAspect { + private static final Logger logger = LoggerFactory.getLogger(LogAspect.class); @Autowired LogService logService; + @Pointcut("@annotation(com.bootdo.common.annotation.Log)") public void logPointCut() { } diff --git a/bootdo/src/main/java/com/bootdo/common/aspect/WebLogAspect.java b/bootdo/src/main/java/com/bootdo/common/aspect/WebLogAspect.java new file mode 100644 index 0000000000000000000000000000000000000000..411627fb04a40bdb87416c0b278dd78bced2a922 --- /dev/null +++ b/bootdo/src/main/java/com/bootdo/common/aspect/WebLogAspect.java @@ -0,0 +1,61 @@ +package com.bootdo.common.aspect; + +import com.bootdo.common.utils.HttpContextUtils; +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.*; +import org.aspectj.lang.reflect.MethodSignature; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import sun.net.util.IPAddressUtil; + +import javax.servlet.http.HttpServletRequest; +import java.lang.reflect.Method; +import java.util.Arrays; + +@Aspect +@Component +public class WebLogAspect { + + private static final Logger logger = LoggerFactory.getLogger(WebLogAspect.class); + + @Pointcut("execution( * com.bootdo..controller.*.*(..))")//两个..代表所有子目录,最后括号里的两个..代表所有参数 + public void logPointCut() { + } + + + @Before("logPointCut()") + public void doBefore(JoinPoint joinPoint) throws Throwable { + // 接收到请求,记录请求内容 + ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + HttpServletRequest request = attributes.getRequest(); + + // 记录下请求内容 + logger.info("请求地址 : " + request.getRequestURL().toString()); + logger.info("HTTP METHOD : " + request.getMethod()); + // 获取真实的ip地址 + //logger.info("IP : " + IPAddressUtil.getClientIpAddress(request)); + logger.info("CLASS_METHOD : " + joinPoint.getSignature().getDeclaringTypeName() + "." + + joinPoint.getSignature().getName()); + logger.info("参数 : " + Arrays.toString(joinPoint.getArgs())); +// loggger.info("参数 : " + joinPoint.getArgs()); + + } + + @AfterReturning(returning = "ret", pointcut = "logPointCut()")// returning的值和doAfterReturning的参数名一致 + public void doAfterReturning(Object ret) throws Throwable { + // 处理完请求,返回内容(返回值太复杂时,打印的是物理存储空间的地址) + logger.info("返回值 : " + ret); + } + + @Around("logPointCut()") + public Object doAround(ProceedingJoinPoint pjp) throws Throwable { + long startTime = System.currentTimeMillis(); + Object ob = pjp.proceed();// ob 为方法的返回值 + logger.info("耗时 : " + (System.currentTimeMillis() - startTime)); + return ob; + } +} diff --git a/bootdo/src/main/resources/application-dev.yml b/bootdo/src/main/resources/application-dev.yml index 8b3abe142fd24fad71df6b0685c170057d3bc0af..bc0a210166a945c2b9286193d8c00c52845c778d 100644 --- a/bootdo/src/main/resources/application-dev.yml +++ b/bootdo/src/main/resources/application-dev.yml @@ -2,6 +2,7 @@ bootdo: uploadPath: D:/var/uploaded_files/ logging: level: + root: info com.bootdo: debug spring: datasource: