|
@ -0,0 +1,50 @@
|
|
|
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;
|
|
|
}
|
|
|
|
|
|
}
|