在JPA中记录查询的延迟

u4dcyp6a  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(76)

我在springboot java app中有一个CRUD存储库。我试图测量查询表单APP透视图的延迟并将其记录在记录器中。请问实现这一点的好方法是什么?我稍后还将使用这些日志进行监控。
我现在的做法是-

long start = System.currentTimeMillis();
result = respoistoryDao.findId();
long executionTime = System.currentTimeMillis()-start;

字符串
我怎么才能让这一切变得更好?

eblbsuwk

eblbsuwk1#

最优雅和可重用的设计应该是Aspect。
首先,创建注解

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Timed {}

字符串
然后创建Aspect

@Slf4j
@Aspect
@Component
public class TimedAspect {

    @Around("@annotation(Timed)")
    public Object executionTimeLogger(ProceedingJoinPoint joinPoint) {
        long start = System.currentTimeMillis();
        Object result = joinPoint.proceed();
        long duration = (System.currentTimeMillis() - start);
          
        log.info("Method: {} | Duration:  {}ms", joinPoint.getSignature(), duration);
        return result;
    }
}


一旦你有了这两个部分,只需将@Timed添加到任何方法签名中,它就会为你注销持续时间。

相关问题