import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; import org.apache.commons.lang3.StringUtils; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.reflect.MethodSignature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import java.lang.reflect.Method; @Component @Aspect public class MvcMethodLogAdvice { private static Logger log = LoggerFactory.getLogger(MvcMethodLogAdvice.class); @Around("@annotation(org.springframework.web.bind.annotation.RequestMapping)") public Object aroundAdvice(ProceedingJoinPoint joinPoint) throws Throwable { Object args[] = joinPoint.getArgs(); MethodSignature signature = (MethodSignature) joinPoint.getSignature(); Method method = signature.getMethod(); // join arguments. log.info("{}.{} : 請求參數:{} ", method.getDeclaringClass().getName(), method.getName(), StringUtils.join(args, " ; ")); long start = System.currentTimeMillis(); Object result = joinPoint.proceed(); long timeConsuming = System.currentTimeMillis() - start; log.info("調用結束--> 返回值:{} 耗時:{}ms", JSONObject.toJSONString(result, SerializerFeature.WriteMapNullValue), timeConsuming); return result; } }
在你的項目中加入這個類就好,這樣設置之后,就會打印這樣的日志
對日后定位問題極有助益