| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- package me.zhengjie.aspect;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.serializer.SerializerFeature;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import org.aspectj.lang.JoinPoint;
- import org.aspectj.lang.Signature;
- import org.aspectj.lang.annotation.AfterReturning;
- import org.aspectj.lang.annotation.Aspect;
- import org.aspectj.lang.annotation.Before;
- import org.aspectj.lang.annotation.Pointcut;
- import org.aspectj.lang.reflect.CodeSignature;
- 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;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Objects;
- import java.util.UUID;
- @Slf4j
- @Aspect
- @Component
- public class LogRequestParam {
-
- @Pointcut("execution(* me.zhengjie.application.*.controller..*.*(..))")
- public void pointCut() {
- }
-
- @Before(value = "pointCut()")
- public void doBefore(JoinPoint joinPoint) {
- try {
- ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder
- .getRequestAttributes();
- if (Objects.isNull(servletRequestAttributes)) {
- return;
- }
- HttpServletRequest request = servletRequestAttributes.getRequest();
-
- String ip = request.getRemoteAddr();
- String uri = request.getRequestURI();
- Object[] parameterValues = joinPoint.getArgs();
- int parameterValuesLength = parameterValues.length;
- if (parameterValuesLength == 0) {
- log.debug("[请求参数] - 无");
- return;
- }
- Signature signature = joinPoint.getSignature();
- if (Objects.isNull(signature)) {
- return;
- }
- String[] parameterNames = ((CodeSignature) signature).getParameterNames();
- if (Objects.isNull(parameterNames) || parameterNames.length != parameterValuesLength) {
- return;
- }
- Map<String, Object> params = new HashMap<>(4);
- for (int i = 0; i < parameterNames.length; i++) {
- Object o = parameterNames[i];
- if (o instanceof MultipartFile || o instanceof MultipartFile[] || o instanceof HttpServletRequest
- || o instanceof HttpServletResponse) {
- continue;
- }
- params.put(parameterNames[i], parameterValues[i]);
- }
- Object[] obj = { ip, uri, JSON.toJSONString(params, SerializerFeature.WriteMapNullValue) };
- log.info("[request] - ip: {} , requestUrl: {} ,param: {} ", obj);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- @AfterReturning(returning = "result", pointcut = "pointCut() ")
- public void doAfterReturning(Object result) {
- try {
- ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder
- .getRequestAttributes();
- if (Objects.isNull(servletRequestAttributes)) {
- return;
- }
- HttpServletResponse response = servletRequestAttributes.getResponse();
- if (Objects.isNull(response)) {
- return;
- }
- int status = response.getStatus();
- HttpServletRequest request = servletRequestAttributes.getRequest();
- String uri = request.getRequestURI();
- Object obj[] = { status, uri, JSON.toJSONString(result, SerializerFeature.WriteMapNullValue) };
- log.info("[reponse] - status: {} , url:{} ,result:{}", obj);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
|