From 0866afbdbbb745a230058195958fd9732bf5c8e2 Mon Sep 17 00:00:00 2001
From: josxy <112438556@qq.com>
Date: Sun, 25 Apr 2021 23:00:37 +0800
Subject: [PATCH] =?UTF-8?q?add:=20aop=E6=94=AF=E6=8C=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 6 ++
.../{LogAspect.java => LogAspectOld.java} | 21 +++----
src/main/java/cn/allms/config/LogAspect.java | 61 +++++++++++++++++++
3 files changed, 76 insertions(+), 12 deletions(-)
rename src/main/java/cn/allms/aspect/{LogAspect.java => LogAspectOld.java} (87%)
create mode 100644 src/main/java/cn/allms/config/LogAspect.java
diff --git a/pom.xml b/pom.xml
index b641fe8..1356aaa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -128,6 +128,12 @@
org.springframework.boot
spring-boot-starter-actuator
+
+
+ com.alibaba
+ fastjson
+ 1.2.35
+
diff --git a/src/main/java/cn/allms/aspect/LogAspect.java b/src/main/java/cn/allms/aspect/LogAspectOld.java
similarity index 87%
rename from src/main/java/cn/allms/aspect/LogAspect.java
rename to src/main/java/cn/allms/aspect/LogAspectOld.java
index 5ee0720..98390bf 100644
--- a/src/main/java/cn/allms/aspect/LogAspect.java
+++ b/src/main/java/cn/allms/aspect/LogAspectOld.java
@@ -2,7 +2,6 @@ package cn.allms.aspect;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
-import org.hibernate.mapping.Join;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
@@ -13,23 +12,21 @@ import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
/**
- * @Auther: 南迪叶先生:https://www.cnblogs.com/ye888/
- * @Date: 2019/9/26
- * @Description: com.yrp.aspect
- * @version: 1.0
+ * @author josxy
*/
-@Aspect
@Component
-public class LogAspect {
+public class LogAspectOld {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
- //拦截所要控制器
- @Pointcut("execution(* com.yrp.controller.*.*(..))")
+ /**
+ * 切点:cn.allms.controller
+ */
+ //@Pointcut("execution(* cn.allms.controller.*.*(..))")
public void log(){}
- @Before("log()")
+ // @Before("log()")
public void doBefore(JoinPoint joinPoint){
// 获取request对象
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
@@ -47,12 +44,12 @@ public class LogAspect {
logger.info("Request : {}",requestLog);
}
- @After("log()")
+ //@After("log()")
public void doAfter(){
// logger.info("-------doafter-----------");
}
- @AfterReturning(returning = "result",pointcut = "log()")
+ //@AfterReturning(returning = "result",pointcut = "log()")
public void doAfterReturn(Object result){
logger.info("控制器方法名称Result : {}",result);
}
diff --git a/src/main/java/cn/allms/config/LogAspect.java b/src/main/java/cn/allms/config/LogAspect.java
new file mode 100644
index 0000000..ce45766
--- /dev/null
+++ b/src/main/java/cn/allms/config/LogAspect.java
@@ -0,0 +1,61 @@
+package cn.allms.config;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.aspectj.lang.annotation.Pointcut;
+import org.springframework.stereotype.Component;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * 日志
+ *
+ * @author rainerosion
+ * @date 2021/4/9 19:11
+ */
+@Slf4j
+@Component
+@Aspect
+public class LogAspect {
+ @Pointcut("execution(* cn.allms.controller.*.*(..))")
+ public void webLog(){}
+
+ @Before("webLog()")
+ public void doBefore(JoinPoint joinPoint) {
+ // 开始打印请求日志
+ ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+ HttpServletRequest request = attributes.getRequest();
+
+ // 打印请求相关参数
+ log.info("========================================== Start ==========================================");
+ // 打印请求 url
+ log.info("[请求URL] : {}", request.getRequestURL().toString());
+ // 打印 Http method
+ log.info("[请求方法] : {}", request.getMethod());
+ // 打印调用 controller 的全路径以及执行方法
+ log.info("[请求类名] : {}.{}", joinPoint.getSignature().getDeclaringTypeName(), joinPoint.getSignature().getName());
+ // 打印请求的 IP
+ log.info("[请求IP] : {}", request.getRemoteAddr());
+ // 打印请求入参
+ log.info("[请求参数] : {}", JSONObject.toJSONString(joinPoint.getArgs()));
+ }
+
+ @Around("webLog()")
+ public Object doAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
+ long startTime = System.currentTimeMillis();
+ Object result = proceedingJoinPoint.proceed();
+ // 打印出参
+ log.info("[响应结果] : {}", JSONObject.toJSONString(result));
+ // 执行耗时
+ log.info("[请求耗时] : {} ms", System.currentTimeMillis() - startTime);
+ log.info("=========================================== End ===========================================");
+ return result;
+ }
+}