@Override public void onApplicationEvent(ServletRequestHandledEvent event) { if (!debugMode) { logger.debug("the debug switch is false!"); return; } if (PATTERNS.isEmpty()) { initPattern(); } String url = event.getRequestUrl(); String client = event.getClientAddress(); long time = event.getProcessingTimeMillis(); String method = event.getMethod(); if (serverProperties.getDebug().getExcludeAddress().contains(client)) { return; } for (Pattern pattern : PATTERNS) { if (pattern.matcher(url).matches()) { return; } } if (time > serverProperties.getDebug().getMaxProcessingTime()) { if (logger.isWarnEnabled()) { logger.warn(String.format("The request '%s' from '%s' with method '%s' execute '%d' more than max time '%d'!Please check it!", url, client, method, time, serverProperties.getDebug().getMaxProcessingTime())); } } System.out.println("request process info:"); System.out.println("begin-----------------"); System.out.println("time=[" + time + "]"); System.out.println("url=[" + url + "]"); System.out.println("client=[" + client + "]"); System.out.println("method=[" + method + "]"); System.out.println("end-------------------"); }
private void publishRequestHandledEvent( HttpServletRequest request, HttpServletResponse response, long startTime, Throwable failureCause) { if (this.publishEvents) { // Whether or not we succeeded, publish an event. long processingTime = System.currentTimeMillis() - startTime; int statusCode = (responseGetStatusAvailable ? response.getStatus() : -1); this.webApplicationContext.publishEvent( new ServletRequestHandledEvent(this, request.getRequestURI(), request.getRemoteAddr(), request.getMethod(), getServletConfig().getServletName(), WebUtils.getSessionId(request), getUsernameForRequest(request), processingTime, failureCause, statusCode)); } }
@Override public void onStartup(ServletContext servletContext) throws ServletException { if (springProfiles != null) { applicationContext.getEnvironment().setActiveProfiles(springProfiles.toArray(new String[0])); } applicationContext.setServletContext(servletContext); dispatcherConfig = new DefaultDispatcherConfig(servletContext); applicationContext.setServletConfig(dispatcherConfig); // Configure the listener for the request handled events. All we do here is release the latch applicationContext.addApplicationListener(new ApplicationListener<ServletRequestHandledEvent>() { @Override public void onApplicationEvent(ServletRequestHandledEvent servletRequestHandledEvent) { try { currentResponse.flushBuffer(); } catch (IOException e) { log.error("Could not flush response buffer", e); throw new RuntimeException("Could not flush response buffer", e); } } }); // Manage the lifecycle of the root application context this.addListener(new ContextLoaderListener(applicationContext)); // Register and map the dispatcher servlet dispatcherServlet = new DispatcherServlet(applicationContext); if (refreshContext) { dispatcherServlet.refresh(); } dispatcherServlet.onApplicationEvent(new ContextRefreshedEvent(applicationContext)); dispatcherServlet.init(dispatcherConfig); notifyStartListeners(servletContext); }
private void publishRequestHandledEvent(HttpServletRequest request, long startTime, Throwable failureCause) { if (this.publishEvents) { // Whether or not we succeeded, publish an event. long processingTime = System.currentTimeMillis() - startTime; this.webApplicationContext.publishEvent( new ServletRequestHandledEvent(this, request.getRequestURI(), request.getRemoteAddr(), request.getMethod(), getServletConfig().getServletName(), WebUtils.getSessionId(request), getUsernameForRequest(request), processingTime, failureCause)); } }
@Override public void onApplicationEvent(ServletRequestHandledEvent servletRequestHandledEvent) { logger.info(String.format("total request processing time: %d ms", servletRequestHandledEvent.getProcessingTimeMillis())); }