软件编程
位置:首页>> 软件编程>> java编程>> Spring StopWatch使用实例详解

Spring StopWatch使用实例详解

作者:盲目的拾荒者  发布时间:2022-03-31 02:46:57 

标签:Spring,Stop,Watch

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

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

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


@Slf4j
public class PerformanceInteceptor implements HandlerInterceptor {
 private ThreadLocal<StopWatch> stopWatchThreadLocal = new ThreadLocal<>();

@Override
 public boolean 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();
     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();
 }
}

来源:https://www.cnblogs.com/niugang0920/p/12186531.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com