Less than 1 minute

@Aspect
@Component
@Slf4j
public class LogAspect implements Ordered {

    @Autowired
    private HttpServletRequest request;

    /**
     * 切点配置
     */
    @Pointcut("@annotation(org.springframework.web.bind.annotation.RequestMapping)")
    public void logMethodPointcut() {

    }

    @Pointcut("@annotation(org.springframework.web.bind.annotation.PostMapping)")
    public void logMethodPointcut2() {

    }

    @Around("logMethodPointcut() || logMethodPointcut2() ")
    public Object interceptor(ProceedingJoinPoint joinPoint) throws Throwable {

        // 切面打印日志
        long startTime = System.currentTimeMillis();
        Object result = null;
        long costTime = 0L;
        try {
            result = joinPoint.proceed(joinPoint.getArgs());
            costTime = System.currentTimeMillis() - startTime;
            return result;
        } catch (Throwable e) {
            throw e;
        } finally {
            log(joinPoint, result, costTime);// 记录响应日志
        }
    }

    /**
     * 记录日志
     * 
     * @param result 方法返回值
     * @param costTime 方法耗时(ms)
     */
    private void log(ProceedingJoinPoint joinPoint, Object result, long costTime) {
        try {
            // 当前执行方法参数
            String methodName = joinPoint.getSignature().getName();
            String className = joinPoint.getTarget().getClass().getName();
            String url = request.getRequestURI();
            log.info("url:{}, method:{}.{}() header:{},param:{},return:{},cost:{} ms", url, className, methodName, HeaderThreadLocal.getHeader(), joinPoint.getArgs(), result, costTime);
        } catch (Exception e) {
            log.error("", e);
        }
    }

    @Override
    public int getOrder() {
        return -1;
    }
}
Last update:
Contributors: gaoqisen,gaoqisen