zoukankan      html  css  js  c++  java
  • 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();
        }
    }

    微信公众号

                              
  • 相关阅读:
    ztree学习---将默认勾选的展开
    CentOS之RPM
    CentOS之文档的压缩与打包
    CentOS之Vim
    CentOS用户和用户组管理
    Linux CentOS更改文件的权限
    CentOS的文件属性:命令 ls -l
    CentOS命令
    Java解析excel
    easyUI的combotree的树的懒加载。
  • 原文地址:https://www.cnblogs.com/niugang0920/p/12186531.html
Copyright © 2011-2022 走看看