123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package com.zkh360.core.config;
- import lombok.extern.slf4j.Slf4j;
- import org.aspectj.lang.JoinPoint;
- import org.aspectj.lang.ProceedingJoinPoint;
- import org.aspectj.lang.annotation.*;
- 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;
- @Aspect
- @Component
- @Slf4j
- public class WebLogAspect {
- @Pointcut("execution(public * com.zkh360.api..controller.*.*(..))")//两个..代表所有子目录,最后括号里的两个..代表所有参数
- public void logPointCut() {
- }
- @Before("logPointCut()")
- public void doBefore(JoinPoint joinPoint) throws Throwable {
- // 接收到请求,记录请求内容
- ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
- HttpServletRequest request = attributes.getRequest();
- // 记录下请求内容
- log.info("请求地址 : " + request.getRequestURL().toString());
- String requestAuthorization = request.getHeader("Authorization");
- log.info("请求的Authorization:"+requestAuthorization);
- log.info("请求的终端:"+request.getHeader("user-agent"));
- log.info("HTTP METHOD : " + request.getMethod());
- log.info("IP : " + request.getRemoteAddr());
- log.info("CLASS_METHOD : " + joinPoint.getSignature().getDeclaringTypeName() + "."
- + joinPoint.getSignature().getName());
- //登陆接口用户密码加密
- String url = request.getRequestURL().toString().substring(request.getRequestURL().toString().length()-10);
- if(url != null && url.equals("user/login")){
- String s = Arrays.toString(joinPoint.getArgs());
- String params = "";
- String invoiceId = "";
- String username = "";
- String[] split = s.split(",");
- String[] rightStr = new String[split.length];
- String str = "";
- for (int i = 0; i < split.length; i++) {
- str = split[2];
- String[] temp = split[i].split("=");
- rightStr[i] = temp[1];
- }
- String str2 = "";
- String[] split1 = str.split("=");
- for (int i = 0; i < split1.length; i++) {
- str2 = split1[1];
- }
- for (int i = 0; i < rightStr.length; i++) {
- invoiceId = rightStr[0];
- username = rightStr[1];
- }
- final String passWord = MD5Util.md5(str2);
- // params = "invoiceId="+invoiceId+",username="+username+",password="+passWord;
- params = "invoiceId="+invoiceId+",username="+username;
- log.info("参数 : " + params);
- }else{
- log.info("参数 : " + Arrays.toString(joinPoint.getArgs()));
- }
- }
- @AfterReturning(returning = "ret", pointcut = "logPointCut()")// returning的值和doAfterReturning的参数名一致
- public void doAfterReturning(Object ret) throws Throwable {
- // 处理完请求,返回内容
- log.info("接口返回值 : " + ret);
- }
- @Around("logPointCut()")
- public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
- long startTime = System.currentTimeMillis();
- Object ob = pjp.proceed();// ob 为方法的返回值
- log.info("接口总耗时 : " + (System.currentTimeMillis() - startTime));
- return ob;
- }
- }
|