Spring StopWatch使用实例详解

网友投稿 290 2022-12-16


Spring StopWatch使用实例详解

这篇文章主要介绍了Spring StopWatch使用实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

StopWatch简单的秒表,允许多个任务的计时,暴露每个命名任务的总运行时间和运行时间。隐藏使用System.currentTimeMillis(),提高应用程序代码的可读性并减少计算错误的可能性。

以下演示使用StopWatch记录请求摘要日志信息:

@Slf4j

public class PerformanceInteceptor implements HandlerInterceptor {

private ThreadLocal stopWatchThreadLocal = new ThreadLocal<>();

@Override

public boohttp://lean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

StopWatch sw = new StopWatch();

stopWatchThreadLocal.set(sw);

sw.start();

return true;

}

@Override

public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

stopWatchThreadLocal.get().stop();

stopWatchThreadLocal.get().start();

}

@Override

public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

StopWatch sw = stopWatchThreadLocal.get();

sw.stop();

String method = handler.getClass().getSimpleName();

if (handler instanceof HandlerMethod) {

String beanType = ((HandlerMethod) handler).getBeanType().getName();

String methodName = ((HandlerMethod) handler).getMethod().getName();http://

method = beanType + "." + methodName;

}

// sw.getTotalTimeMillis(), 总执行时间

//sw.getTotalTimeMillis() - sw.getLastTaskTimeMillis(), 执行方法体所需要的时间

log.info("{};{};{};{};{}ms;{}ms;{}ms", request.getRequestURI(), method,

response.getStatus(), ex == null ? "-" : ex.getClass().getSimpleName(),

sw.getTotalTimeMillis(), sw.getTotalTimeMillis() - sw.getLastTaskTimeMillis(),

sw.getLastTaskTimeMillis());

stopWatchThreadLocal.remove();

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java注解如何基于Redission实现分布式锁
下一篇:Java CPU性能分析工具代码实例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~