Commit fd754c41500f2c8a2ecc68d23ff64979631852a0
1 parent
1bda09e70e
Exists in
master
and in
6 other branches
针对mongoquery对象把参数打印出来
Showing 1 changed file with 80 additions and 75 deletions
platform-common/src/main/java/com/lyms/platform/common/perf/DalMethodInterceptor.java
View file @
fd754c4
1 | 1 | package com.lyms.platform.common.perf; |
2 | 2 | |
3 | +import com.lyms.platform.common.dao.operator.MongoQuery; | |
3 | 4 | import com.lyms.platform.common.utils.ExceptionUtils; |
4 | 5 | import org.aopalliance.intercept.MethodInterceptor; |
5 | 6 | import org.aopalliance.intercept.MethodInvocation; |
6 | 7 | |
7 | 8 | |
8 | 9 | |
9 | 10 | |
10 | 11 | |
11 | 12 | |
12 | 13 | |
... | ... | @@ -10,89 +11,93 @@ |
10 | 11 | import java.util.Map; |
11 | 12 | |
12 | 13 | /** |
13 | - * | |
14 | 14 | * dao层的性能拦截类,用于统计dal层操作的耗时 |
15 | - * | |
16 | - * @author Administrator | |
17 | 15 | * |
16 | + * @author Administrator | |
18 | 17 | */ |
19 | 18 | public class DalMethodInterceptor implements MethodInterceptor { |
20 | 19 | |
21 | - private Logger logger = LoggerFactory.getLogger("DAL-MONITOR"); | |
20 | + private Logger logger = LoggerFactory.getLogger("DAL-MONITOR"); | |
22 | 21 | |
23 | - private static Map<String,Object> typeMap = new HashMap<>(); | |
24 | - { | |
25 | - typeMap.put("int",0); | |
26 | - typeMap.put("double",0.00); | |
27 | - typeMap.put("long",0); | |
28 | - } | |
29 | - | |
30 | - /** | |
31 | - * 阀值超过该阀值就是warn 级别的日志 | |
32 | - */ | |
33 | - private int threshold=50; | |
22 | + private static Map<String, Object> typeMap = new HashMap<>(); | |
34 | 23 | |
35 | - public void setThreshold(int threshold) { | |
36 | - this.threshold = threshold; | |
37 | - } | |
24 | + { | |
25 | + typeMap.put("int", 0); | |
26 | + typeMap.put("double", 0.00); | |
27 | + typeMap.put("long", 0); | |
28 | + } | |
38 | 29 | |
39 | - @Override | |
40 | - public Object invoke(MethodInvocation arg0) throws Throwable { | |
41 | - long start = System.currentTimeMillis(); | |
42 | - try { | |
30 | + /** | |
31 | + * 阀值超过该阀值就是warn 级别的日志 | |
32 | + */ | |
33 | + private int threshold = 50; | |
43 | 34 | |
44 | - Object object = arg0.proceed(); | |
45 | - if(null==object &&!"Void".equalsIgnoreCase(arg0.getMethod().getReturnType().getSimpleName())&&arg0.getMethod().getReturnType().isPrimitive()){ | |
46 | - logger.warn("method return is Primitive ,result is null."); | |
47 | - return typeMap.get(arg0.getMethod().getReturnType()); | |
48 | - } | |
49 | - return object; | |
50 | - } catch (Exception e) { | |
51 | - ExceptionUtils.catchException(e,"DalMethodInterceptor error."); | |
52 | - throw e; | |
53 | - }finally{ | |
54 | - long end = System.currentTimeMillis(); | |
55 | - long i =(end - start); | |
56 | - boolean slow=i>threshold; | |
57 | - String result = arg0.getThis().getClass().getSimpleName() + "." | |
58 | - + arg0.getMethod().getName() | |
59 | - + getShortArgs(arg0.getArguments(),slow) + " use " + i | |
60 | - + "ms."; | |
61 | - if(slow){ | |
62 | - logger.warn(result); | |
63 | - }else{ | |
64 | - logger.info(result); | |
65 | - } | |
66 | - } | |
67 | - } | |
68 | - | |
69 | - /** | |
70 | - * 获取参数列表 | |
71 | - * | |
72 | - * @param obj | |
73 | - * @return | |
74 | - */ | |
75 | - private String getShortArgs(Object[] obj,boolean f) { | |
76 | - StringBuilder builder = new StringBuilder("("); | |
77 | - for (Object o : obj) { | |
78 | - if(null==o){ | |
79 | - continue; | |
80 | - } | |
81 | - if (o.getClass().isPrimitive()) { | |
82 | - builder.append(o); | |
83 | - } else { | |
84 | - builder.append(o.getClass().getSimpleName()); | |
85 | - if(f){ | |
86 | - builder.append("|"); | |
87 | - builder.append(o.toString()); | |
88 | - } | |
89 | - } | |
90 | - builder.append(","); | |
91 | - } | |
92 | - if(builder.toString().endsWith(",")){ | |
93 | - builder.deleteCharAt(builder.length() - 1); | |
94 | - } | |
95 | - return builder.append(")").toString(); | |
96 | - } | |
35 | + public void setThreshold(int threshold) { | |
36 | + this.threshold = threshold; | |
37 | + } | |
38 | + | |
39 | + @Override | |
40 | + public Object invoke(MethodInvocation arg0) throws Throwable { | |
41 | + long start = System.currentTimeMillis(); | |
42 | + try { | |
43 | + | |
44 | + Object object = arg0.proceed(); | |
45 | + if (null == object && !"Void".equalsIgnoreCase(arg0.getMethod().getReturnType().getSimpleName()) && arg0.getMethod().getReturnType().isPrimitive()) { | |
46 | + logger.warn("method return is Primitive ,result is null."); | |
47 | + return typeMap.get(arg0.getMethod().getReturnType()); | |
48 | + } | |
49 | + return object; | |
50 | + } catch (Exception e) { | |
51 | + ExceptionUtils.catchException(e, "DalMethodInterceptor error."); | |
52 | + throw e; | |
53 | + } finally { | |
54 | + long end = System.currentTimeMillis(); | |
55 | + long i = (end - start); | |
56 | + boolean slow = i > threshold; | |
57 | + String result = arg0.getThis().getClass().getSimpleName() + "." | |
58 | + + arg0.getMethod().getName() | |
59 | + + getShortArgs(arg0.getArguments(), slow) + " use " + i | |
60 | + + "ms."; | |
61 | + if (slow) { | |
62 | + logger.warn(result); | |
63 | + } else { | |
64 | + logger.info(result); | |
65 | + } | |
66 | + } | |
67 | + } | |
68 | + | |
69 | + /** | |
70 | + * 获取参数列表 | |
71 | + * | |
72 | + * @param obj | |
73 | + * @return | |
74 | + */ | |
75 | + private String getShortArgs(Object[] obj, boolean f) { | |
76 | + StringBuilder builder = new StringBuilder("("); | |
77 | + for (Object o : obj) { | |
78 | + if (null == o) { | |
79 | + continue; | |
80 | + } | |
81 | + if (o.getClass().isPrimitive()) { | |
82 | + builder.append(o); | |
83 | + } else { | |
84 | + builder.append(o.getClass().getSimpleName()); | |
85 | + if (f) { | |
86 | + builder.append("|"); | |
87 | + if ("MongoQuery".equals(o.getClass().getSimpleName())) { | |
88 | + MongoQuery mongoQuery = (MongoQuery)o; | |
89 | + builder.append(mongoQuery.convertToMongoQuery()); | |
90 | + } else { | |
91 | + builder.append(o.toString()); | |
92 | + } | |
93 | + } | |
94 | + } | |
95 | + builder.append(","); | |
96 | + } | |
97 | + if (builder.toString().endsWith(",")) { | |
98 | + builder.deleteCharAt(builder.length() - 1); | |
99 | + } | |
100 | + return builder.append(")").toString(); | |
101 | + } | |
97 | 102 | } |