diff --git a/member/src/main/java/com/yovinchen/train/member/aspect/LogAspect.java b/member/src/main/java/com/yovinchen/train/member/aspect/LogAspect.java
new file mode 100644
index 0000000..30c0a94
--- /dev/null
+++ b/member/src/main/java/com/yovinchen/train/member/aspect/LogAspect.java
@@ -0,0 +1,101 @@
+package com.yovinchen.train.member.aspect;
+
+import cn.hutool.core.util.RandomUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.support.spring.PropertyPreFilters;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.Signature;
+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.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.MDC;
+import org.springframework.stereotype.Component;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * ClassName: LogAspect
+ * Package: com.yovinchen.train.member.aspect
+ *
+ * @author yovinchen
+ * @Create 2024/1/18 17:46
+ */
+@Aspect
+@Component
+public class LogAspect {
+ private final static Logger LOG = LoggerFactory.getLogger(LogAspect.class);
+
+ public LogAspect() {
+ System.out.println("Common LogAspect");
+ }
+
+ /**
+ * 定义一个切点
+ */
+ @Pointcut("execution(public * com.yovinchen..*Controller.*(..))")
+ public void controllerPointcut() {
+ }
+
+ @Before("controllerPointcut()")
+ public void doBefore(JoinPoint joinPoint) {
+
+ MDC.put("LOG_ID", System.currentTimeMillis() + RandomUtil.randomString(3));
+ // 开始打印请求日志
+ ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+ HttpServletRequest request = attributes.getRequest();
+ Signature signature = joinPoint.getSignature();
+ String name = signature.getName();
+
+ // 打印请求信息
+ LOG.info("------------- 开始 -------------");
+ LOG.info("请求地址: {} {}", request.getRequestURL()
+ .toString(), request.getMethod());
+ LOG.info("类名方法: {}.{}", signature.getDeclaringTypeName(), name);
+ LOG.info("远程地址: {}", request.getRemoteAddr());
+
+ // 打印请求参数
+ Object[] args = joinPoint.getArgs();
+ // LOG.info("请求参数: {}", JSONObject.toJSONString(args));
+
+ // 排除特殊类型的参数,如文件类型
+ Object[] arguments = new Object[args.length];
+ for (int i = 0; i < args.length; i++) {
+ if (args[i] instanceof ServletRequest
+ || args[i] instanceof ServletResponse
+ || args[i] instanceof MultipartFile) {
+ continue;
+ }
+ arguments[i] = args[i];
+ }
+ // 排除字段,敏感字段或太长的字段不显示:身份证、手机号、邮箱、密码等
+ String[] excludeProperties = {"mobile"};
+ PropertyPreFilters filters = new PropertyPreFilters();
+ PropertyPreFilters.MySimplePropertyPreFilter excludefilter = filters.addFilter();
+ excludefilter.addExcludes(excludeProperties);
+ LOG.info("请求参数: {}", JSONObject.toJSONString(arguments, excludefilter));
+ }
+
+ @Around("controllerPointcut()")
+ public Object doAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
+ long startTime = System.currentTimeMillis();
+ Object result = proceedingJoinPoint.proceed();
+ // 排除字段,敏感字段或太长的字段不显示:身份证、手机号、邮箱、密码等
+ String[] excludeProperties = {};
+ PropertyPreFilters filters = new PropertyPreFilters();
+ PropertyPreFilters.MySimplePropertyPreFilter excludefilter = filters.addFilter();
+ excludefilter.addExcludes(excludeProperties);
+ LOG.info("返回结果: {}", JSONObject.toJSONString(result, excludefilter));
+ LOG.info("------------- 结束 耗时:{} ms -------------", System.currentTimeMillis() - startTime);
+ return result;
+ }
+
+}
+
diff --git a/member/src/main/java/com/yovinchen/train/member/controller/testController.java b/member/src/main/java/com/yovinchen/train/member/controller/testController.java
new file mode 100644
index 0000000..8504e1c
--- /dev/null
+++ b/member/src/main/java/com/yovinchen/train/member/controller/testController.java
@@ -0,0 +1,21 @@
+package com.yovinchen.train.member.controller;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * ClassName: testController
+ * Package: com.yovinchen.train.member.controller
+ *
+ * @author yovinchen
+ * @Create 2024/1/18 17:58
+ */
+@RestController
+@RequestMapping("/member")
+public class testController {
+ @GetMapping("/test")
+ public void count() {
+ System.out.println("11111");
+ }
+}
diff --git a/pom.xml b/pom.xml
index 2acddeb..203c018 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,10 +22,24 @@
2022.0.0
+
+ com.alibaba
+ fastjson
+ 1.2.73
+
+
+ cn.hutool
+ hutool-all
+ 5.6.3
+
org.springframework.boot
spring-boot-starter-web
+
+ org.springframework.boot
+ spring-boot-starter-aop
+
org.springframework.cloud
spring-cloud-starter