修改 member 模块环绕日志、日志号标识、aop框架以及测试借口
This commit is contained in:
parent
231e89b5c3
commit
9e1a48e908
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -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");
|
||||||
|
}
|
||||||
|
}
|
14
pom.xml
14
pom.xml
@ -22,10 +22,24 @@
|
|||||||
<spring-cloud.version>2022.0.0</spring-cloud.version>
|
<spring-cloud.version>2022.0.0</spring-cloud.version>
|
||||||
</properties>
|
</properties>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alibaba</groupId>
|
||||||
|
<artifactId>fastjson</artifactId>
|
||||||
|
<version>1.2.73</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>cn.hutool</groupId>
|
||||||
|
<artifactId>hutool-all</artifactId>
|
||||||
|
<version>5.6.3</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-web</artifactId>
|
<artifactId>spring-boot-starter-web</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-aop</artifactId>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.cloud</groupId>
|
<groupId>org.springframework.cloud</groupId>
|
||||||
<artifactId>spring-cloud-starter</artifactId>
|
<artifactId>spring-cloud-starter</artifactId>
|
||||||
|
Loading…
Reference in New Issue
Block a user