java - 如何使用 AOP 计算控制器类中调用的所有内部服务的响应时间
问题描述
我的 Rest Api 是在 Spring Boot 中开发的,我们使用 Splunk 和 Spring AOP 进行日志记录。我的问题是如何计算所有被调用的内部服务的响应时间。现在,我能够获得端到端的响应时间。我们需要它来在 Splunk 中创建仪表板以跟踪 Api 的性能。
解决方案
这是一个使用 AspectJ 的 @Around 注释的示例。
@Aspect
@Configuration
public class MethodExecutionCalculationAspect {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Around("@annotation(com.in28minutes.springboot.tutorial.basics.example.aop.TrackTime)")
public void around(ProceedingJoinPoint joinPoint) throws Throwable {
long startTime = System.currentTimeMillis();
joinPoint.proceed();
long timeTaken = System.currentTimeMillis() - startTime;
logger.info("Time Taken by {} is {}", joinPoint, timeTaken);
}
}
所以,我认为这就是你想要做的。
推荐阅读
- c - 语义版本控制:更改*应该*通过库函数分配的非透明结构
- excel - Excel - 根据其他 3 列中的条件进行计数
- ios - 表视图的通用委托
- javascript - 不断陷入循环
- python - 从单独的 csv 文件中获取值并替换管道分隔文件中的列值
- python - 将高斯曲线拟合到数据
- javascript - 为什么 sort() 使用 Math.random() 与使用数字不同?
- javascript - 如何创建一个动态输入字段,该字段将根据输入内的标签更新宽度
- javascript - 返回javascript中最后一个非空对象的索引
- javascript - 如何创建一个框,我可以在其中使用 JavaScript 为我的计算器项目添加文本?