1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package com.yihu.jw.advice;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import org.aspectj.lang.ProceedingJoinPoint;
- import org.aspectj.lang.annotation.Around;
- import org.aspectj.lang.annotation.Aspect;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.cloud.sleuth.Tracer;
- import org.springframework.stereotype.Component;
- import org.springframework.web.context.request.RequestContextHolder;
- import org.springframework.web.context.request.ServletRequestAttributes;
- import javax.servlet.http.HttpServletRequest;
- /**
- * Created by yeshijie on 2018/9/14
- */
- @Aspect
- @Component
- public class HttpAdvice {
- @Autowired
- private Tracer tracer;
- @Autowired
- private ObjectMapper objectMapper;
- private Logger logger = LoggerFactory.getLogger(HttpAdvice.class);
- @Around("within(@org.springframework.web.bind.annotation.RestController *)")
- public Object process(ProceedingJoinPoint point) throws Throwable {
- //保存入参
- HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
- tracer.getCurrentSpan().logEvent(objectMapper.writeValueAsString(request.getParameterMap()));
- //访问目标方法的参数:
- Object[] args = point.getArgs();
- Long strartTime = System.currentTimeMillis();
- Object returnValue = point.proceed(args);
- Long endTime = System.currentTimeMillis();
- //保存响应
- tracer.getCurrentSpan().logEvent(objectMapper.writeValueAsString(returnValue));
- //保存响应时间
- tracer.getCurrentSpan().logEvent("executeTime:"+(endTime - strartTime));
- return returnValue;
- }
- }
|