WANG 6 år sedan
förälder
incheckning
5decea3dc3

+ 6 - 1
src/main/java/cn/com/qmth/examcloud/web/enums/HttpServletRequestAttribute.java

@@ -47,6 +47,11 @@ public enum HttpServletRequestAttribute {
 	/**
 	 * metrics timer context
 	 */
-	$_METRICS_TIMER_CTX
+	$_METRICS_TIMER_CTX,
+
+	/**
+	 * 接口调用异常
+	 */
+	$_EXCEPTION_HAPPENED
 
 }

+ 14 - 0
src/main/java/cn/com/qmth/examcloud/web/interceptor/StatisticInterceptor.java

@@ -8,6 +8,7 @@ import javax.servlet.http.HttpServletResponse;
 import org.springframework.web.servlet.HandlerInterceptor;
 
 import com.codahale.metrics.ConsoleReporter;
+import com.codahale.metrics.Meter;
 import com.codahale.metrics.MetricRegistry;
 import com.codahale.metrics.Timer;
 import com.codahale.metrics.Timer.Context;
@@ -60,5 +61,18 @@ public class StatisticInterceptor implements HandlerInterceptor {
 		if (null != ctx) {
 			ctx.stop();
 		}
+		Boolean hasException = (Boolean) request
+				.getAttribute(HttpServletRequestAttribute.$_EXCEPTION_HAPPENED.name());
+
+		if (null != hasException && hasException) {
+			ApiInfo apiInfo = (ApiInfo) request
+					.getAttribute(HttpServletRequestAttribute.$_API_INFO.name());
+
+			if (null != apiInfo) {
+				Meter meter = metricRegistry.meter(apiInfo.getMapping());
+				meter.mark();
+			}
+		}
+
 	}
 }

+ 8 - 0
src/main/java/cn/com/qmth/examcloud/web/support/ControllerAspect.java

@@ -139,7 +139,15 @@ public class ControllerAspect {
 			}
 			// 执行
 			ret = joinPoint.proceed();
+
+			request.setAttribute(HttpServletRequestAttribute.$_EXCEPTION_HAPPENED.name(),
+					new Boolean(false));
+
 		} catch (Throwable e) {
+
+			request.setAttribute(HttpServletRequestAttribute.$_EXCEPTION_HAPPENED.name(),
+					new Boolean(true));
+
 			if (null != httpMethodProcessor) {
 				try {
 					httpMethodProcessor.onException(request, args, e);