Skip to content

Commit 99a56ea

Browse files
committed
添加Decision日志
1 parent 9f375ca commit 99a56ea

File tree

10 files changed

+143
-29
lines changed

10 files changed

+143
-29
lines changed

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/decision/factory/FlowRateGrayDecisionFactory.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import cn.springcloud.gray.request.GrayHttpTrackInfo;
66
import lombok.Getter;
77
import lombok.Setter;
8+
import lombok.ToString;
9+
import lombok.extern.slf4j.Slf4j;
810
import org.apache.commons.lang3.StringUtils;
911

1012
import java.util.Collection;
@@ -17,6 +19,7 @@
1719
* 按(value(type,feild)+salt)%100, < rate的将放量。
1820
* 从以上的逻辑中实现按百分比灰度放量.
1921
*/
22+
@Slf4j
2023
public class FlowRateGrayDecisionFactory extends AbstractGrayDecisionFactory<FlowRateGrayDecisionFactory.Config> {
2124

2225
public static final String FIELD_SCOPE_HTTP_HEADER = "HttpHeader";
@@ -38,11 +41,16 @@ public GrayDecision apply(Config configBean) {
3841
GrayHttpRequest grayHttpRequest = (GrayHttpRequest) args.getGrayRequest();
3942
String value = getFieldValue(grayHttpRequest, configBean);
4043
if (StringUtils.isEmpty(value)) {
44+
log.debug("[FlowRateGrayDecision] serviceId:{}, uri:{}, decisionConfig:{}, testResult:{}",
45+
grayHttpRequest.getServiceId(), grayHttpRequest.getUri(), configBean, false);
4146
return false;
4247
}
4348
int hashcode = Math.abs((value + StringUtils.defaultString(configBean.getSalt())).hashCode());
4449
int mod = hashcode % 100;
45-
return mod <= configBean.getRate();
50+
boolean b = mod <= configBean.getRate();
51+
log.debug("[FlowRateGrayDecision] serviceId:{}, uri:{}, decisionConfig:{}, mod:{}, testResult:{}",
52+
grayHttpRequest.getServiceId(), grayHttpRequest.getUri(), configBean, mod, b);
53+
return b;
4654
};
4755
}
4856

@@ -97,6 +105,7 @@ private String joinString(Collection<String> collection) {
97105

98106
@Setter
99107
@Getter
108+
@ToString
100109
public static class Config {
101110
private String type;
102111
private String field;

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/decision/factory/HttpHeaderGrayDecisionFactory.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,16 @@
44
import cn.springcloud.gray.decision.compare.Comparators;
55
import cn.springcloud.gray.decision.compare.PredicateComparator;
66
import cn.springcloud.gray.request.GrayHttpRequest;
7+
import cn.springcloud.gray.utils.JsonUtils;
78
import lombok.Getter;
89
import lombok.Setter;
10+
import lombok.ToString;
911
import org.slf4j.Logger;
1012
import org.slf4j.LoggerFactory;
1113

1214
import java.util.Collection;
1315
import java.util.Collections;
1416
import java.util.List;
15-
import java.util.Map;
1617

1718
public class HttpHeaderGrayDecisionFactory
1819
extends CompareGrayDecisionFactory<HttpHeaderGrayDecisionFactory.Config> {
@@ -31,16 +32,25 @@ public GrayDecision apply(Config configBean) {
3132
PredicateComparator<Collection<String>> predicateComparator =
3233
Comparators.getCollectionStringComparator(configBean.getCompareMode());
3334
if (predicateComparator == null) {
34-
log.warn("没有找到相应与compareMode'{}'对应的PredicateComparator", configBean.getCompareMode());
35+
log.warn("[HttpHeaderGrayDecision] serviceId:{}, uri:{}, 没有找到相应与compareMode'{}'对应的PredicateComparator, testResult:{}",
36+
grayRequest.getServiceId(), grayRequest.getUri(), configBean.getCompareMode(), false);
3537
return false;
3638
}
37-
return predicateComparator.test(grayRequest.getHeader(configBean.getHeader()), configBean.getValues());
39+
40+
List<String> headerValues = grayRequest.getHeader(configBean.getHeader());
41+
boolean b = predicateComparator.test(headerValues, configBean.getValues());
42+
if (log.isDebugEnabled()) {
43+
log.debug("[HttpHeaderGrayDecision] serviceId:{}, uri:{}, decisionConfig:{}, headerValues:{}, testResult:{}",
44+
grayRequest.getServiceId(), grayRequest.getUri(), JsonUtils.toJsonString(configBean), headerValues, b);
45+
}
46+
return b;
3847
};
3948
}
4049

4150

4251
@Setter
4352
@Getter
53+
@ToString
4454
public static class Config extends CompareGrayDecisionFactory.CompareConfig {
4555
private String header;
4656
private List<String> values;

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/decision/factory/HttpMethodGrayDecisionFactory.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
import cn.springcloud.gray.decision.compare.Comparators;
55
import cn.springcloud.gray.decision.compare.PredicateComparator;
66
import cn.springcloud.gray.request.GrayHttpRequest;
7+
import cn.springcloud.gray.utils.JsonUtils;
78
import lombok.Getter;
89
import lombok.Setter;
10+
import lombok.ToString;
911
import org.slf4j.Logger;
1012
import org.slf4j.LoggerFactory;
1113
import org.springframework.http.HttpMethod;
@@ -26,16 +28,23 @@ public GrayDecision apply(Config configBean) {
2628
GrayHttpRequest grayRequest = (GrayHttpRequest) args.getGrayRequest();
2729
PredicateComparator<String> predicateComparator = Comparators.getStringComparator(configBean.getCompareMode());
2830
if (predicateComparator == null) {
29-
log.warn("没有找到相应与compareMode'{}'对应的PredicateComparator", configBean.getCompareMode());
31+
log.warn("[HttpMethodGrayDecision] serviceId:{}, uri:{}, 没有找到相应与compareMode'{}'对应的PredicateComparator, testResult:{}",
32+
grayRequest.getServiceId(), grayRequest.getUri(), configBean.getCompareMode(), false);
3033
return false;
3134
}
32-
return predicateComparator.test(grayRequest.getMethod(), configBean.getMethod().name());
35+
boolean b = predicateComparator.test(grayRequest.getMethod(), configBean.getMethod().name());
36+
if (log.isDebugEnabled()) {
37+
log.debug("[HttpMethodGrayDecision] serviceId:{}, uri:{}, decisionConfig:{}, headerValues:{}, testResult:{}",
38+
grayRequest.getServiceId(), grayRequest.getUri(), JsonUtils.toJsonString(configBean), grayRequest.getMethod(), b);
39+
}
40+
return b;
3341
};
3442
}
3543

3644

3745
@Setter
3846
@Getter
47+
@ToString
3948
public static class Config extends CompareGrayDecisionFactory.CompareConfig {
4049
private HttpMethod method;
4150

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/decision/factory/HttpParameterGrayDecisionFactory.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
import cn.springcloud.gray.decision.compare.Comparators;
55
import cn.springcloud.gray.decision.compare.PredicateComparator;
66
import cn.springcloud.gray.request.GrayHttpRequest;
7+
import cn.springcloud.gray.utils.JsonUtils;
78
import lombok.Getter;
89
import lombok.Setter;
10+
import lombok.ToString;
911
import org.slf4j.Logger;
1012
import org.slf4j.LoggerFactory;
1113

@@ -32,13 +34,20 @@ public GrayDecision apply(Config configBean) {
3234
log.warn("没有找到相应与compareMode'{}'对应的PredicateComparator", configBean.getCompareMode());
3335
return false;
3436
}
35-
return predicateComparator.test(grayRequest.getParameter(configBean.getName()), configBean.getValues());
37+
List<String> parameters = grayRequest.getParameter(configBean.getName());
38+
boolean b = predicateComparator.test(parameters, configBean.getValues());
39+
if (log.isDebugEnabled()) {
40+
log.debug("[HttpParameterGrayDecision] serviceId:{}, uri:{}, decisionConfig:{}, headerValues:{}, testResult:{}",
41+
grayRequest.getServiceId(), grayRequest.getUri(), JsonUtils.toJsonString(configBean), grayRequest.getMethod(), b);
42+
}
43+
return b;
3644
};
3745
}
3846

3947

4048
@Setter
4149
@Getter
50+
@ToString
4251
public static class Config extends CompareGrayDecisionFactory.CompareConfig {
4352
private String name;
4453
private List<String> values;

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/decision/factory/HttpTrackHeaderGrayDecisionFactory.java

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,17 @@
33
import cn.springcloud.gray.decision.GrayDecision;
44
import cn.springcloud.gray.decision.compare.Comparators;
55
import cn.springcloud.gray.decision.compare.PredicateComparator;
6+
import cn.springcloud.gray.request.GrayHttpRequest;
67
import cn.springcloud.gray.request.GrayHttpTrackInfo;
8+
import cn.springcloud.gray.utils.JsonUtils;
9+
import lombok.extern.slf4j.Slf4j;
710
import org.slf4j.Logger;
811
import org.slf4j.LoggerFactory;
912

1013
import java.util.Collection;
14+
import java.util.List;
1115

16+
@Slf4j
1217
public class HttpTrackHeaderGrayDecisionFactory extends CompareGrayDecisionFactory<HttpHeaderGrayDecisionFactory.Config> {
1318

1419
private static final Logger log = LoggerFactory.getLogger(HttpTrackHeaderGrayDecisionFactory.class);
@@ -20,19 +25,29 @@ public HttpTrackHeaderGrayDecisionFactory() {
2025
@Override
2126
public GrayDecision apply(HttpHeaderGrayDecisionFactory.Config configBean) {
2227
return args -> {
23-
GrayHttpTrackInfo grayTrackInfo = (GrayHttpTrackInfo) args.getGrayRequest().getGrayTrackInfo();
28+
GrayHttpRequest grayRequest = (GrayHttpRequest) args.getGrayRequest();
29+
GrayHttpTrackInfo grayTrackInfo = (GrayHttpTrackInfo) grayRequest.getGrayTrackInfo();
2430
if (grayTrackInfo == null) {
25-
log.warn("没有获取到灰度追踪信息");
31+
log.warn("[HttpTrackHeaderGrayDecision] serviceId:{}, uri:{} 没有获取到灰度追踪信息, testReslut:{}",
32+
grayRequest.getServiceId(), grayRequest.getUri(), false);
2633
return false;
2734
}
2835

2936
PredicateComparator<Collection<String>> predicateComparator =
3037
Comparators.getCollectionStringComparator(configBean.getCompareMode());
3138
if (predicateComparator == null) {
32-
log.warn("没有找到相应与compareMode'{}'对应的PredicateComparator", configBean.getCompareMode());
39+
log.warn("[HttpTrackHeaderGrayDecision] serviceId:{}, uri:{} 没有找到相应与compareMode'{}'对应的PredicateComparator, testReslut:{}",
40+
grayRequest.getServiceId(), grayRequest.getUri(), configBean.getCompareMode(), false);
3341
return false;
3442
}
35-
return predicateComparator.test(grayTrackInfo.getHeader(configBean.getHeader()), configBean.getValues());
43+
44+
List<String> headerValues = grayTrackInfo.getHeader(configBean.getHeader());
45+
boolean b = predicateComparator.test(headerValues, configBean.getValues());
46+
if (log.isDebugEnabled()) {
47+
log.debug("[HttpTrackHeaderGrayDecision] serviceId:{}, uri:{}, decisionConfig:{}, trackHeader:{}, testReslut:{}",
48+
grayRequest.getServiceId(), grayRequest.getUri(), JsonUtils.toJsonString(configBean), headerValues, b);
49+
}
50+
return b;
3651
};
3752
}
3853
}

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/decision/factory/HttpTrackParameterGrayDecisionFactory.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@
33
import cn.springcloud.gray.decision.GrayDecision;
44
import cn.springcloud.gray.decision.compare.Comparators;
55
import cn.springcloud.gray.decision.compare.PredicateComparator;
6+
import cn.springcloud.gray.request.GrayHttpRequest;
67
import cn.springcloud.gray.request.GrayHttpTrackInfo;
8+
import cn.springcloud.gray.utils.JsonUtils;
79
import org.slf4j.Logger;
810
import org.slf4j.LoggerFactory;
911

1012
import java.util.Collection;
13+
import java.util.List;
1114

1215
public class HttpTrackParameterGrayDecisionFactory extends CompareGrayDecisionFactory<HttpParameterGrayDecisionFactory.Config> {
1316

@@ -20,18 +23,28 @@ public HttpTrackParameterGrayDecisionFactory() {
2023
@Override
2124
public GrayDecision apply(HttpParameterGrayDecisionFactory.Config configBean) {
2225
return args -> {
23-
GrayHttpTrackInfo grayTrackInfo = (GrayHttpTrackInfo) args.getGrayRequest().getGrayTrackInfo();
26+
GrayHttpRequest grayRequest = (GrayHttpRequest) args.getGrayRequest();
27+
GrayHttpTrackInfo grayTrackInfo = (GrayHttpTrackInfo) grayRequest.getGrayTrackInfo();
2428
if (grayTrackInfo == null) {
25-
log.warn("没有获取到灰度追踪信息");
29+
log.warn("[HttpTrackParameterGrayDecision] serviceId:{}, uri:{} 没有获取到灰度追踪信息, testResult:{}",
30+
grayRequest.getServiceId(), grayRequest.getUri(), false);
2631
return false;
2732
}
2833
PredicateComparator<Collection<String>> predicateComparator =
2934
Comparators.getCollectionStringComparator(configBean.getCompareMode());
3035
if (predicateComparator == null) {
31-
log.warn("没有找到相应与compareMode'{}'对应的PredicateComparator", configBean.getCompareMode());
36+
log.warn("[HttpTrackParameterGrayDecision] serviceId:{}, uri:{} 没有找到相应与compareMode'{}'对应的PredicateComparator, testReslut:{}",
37+
grayRequest.getServiceId(), grayRequest.getUri(), configBean.getCompareMode(), false);
3238
return false;
3339
}
34-
return predicateComparator.test(grayTrackInfo.getParameter(configBean.getName()), configBean.getValues());
40+
41+
List<String> parameters = grayTrackInfo.getParameter(configBean.getName());
42+
boolean b = predicateComparator.test(parameters, configBean.getValues());
43+
if (log.isDebugEnabled()) {
44+
log.debug("[HttpTrackParameterGrayDecision] serviceId:{}, uri:{}, decisionConfig:{}, trackParameter:{}, testReslut:{}",
45+
grayRequest.getServiceId(), grayRequest.getUri(), JsonUtils.toJsonString(configBean), parameters, b);
46+
}
47+
return b;
3548
};
3649
}
3750
}

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/decision/factory/TraceIpGrayDecisionFactory.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package cn.springcloud.gray.decision.factory;
22

33
import cn.springcloud.gray.decision.GrayDecision;
4+
import cn.springcloud.gray.request.GrayRequest;
45
import cn.springcloud.gray.request.GrayTrackInfo;
56
import lombok.Getter;
67
import lombok.Setter;
@@ -23,18 +24,26 @@ public TraceIpGrayDecisionFactory() {
2324
public GrayDecision apply(Config configBean) {
2425
return args -> {
2526
Pattern pat = Pattern.compile(configBean.getIp());
26-
GrayTrackInfo trackInfo = args.getGrayRequest().getGrayTrackInfo();
27+
GrayRequest grayRequest = args.getGrayRequest();
28+
GrayTrackInfo trackInfo = grayRequest.getGrayTrackInfo();
2729
if (trackInfo == null) {
28-
log.warn("没有获取到灰度追踪信息");
30+
log.warn("[TraceIpGrayDecision] serviceId:{} 没有获取到灰度追踪信息, testResult:{}",
31+
grayRequest.getServiceId(), false);
2932
return false;
3033
}
3134
String traceIp = trackInfo.getTraceIp();
3235
if (StringUtils.isEmpty(traceIp)) {
33-
log.warn("灰度追踪记录的ip为空");
36+
log.warn("[TraceIpGrayDecision] serviceId:{} 灰度追踪记录的ip为空, testResult:{}",
37+
grayRequest.getServiceId(), false);
3438
return false;
3539
}
3640
Matcher mat = pat.matcher(traceIp);
37-
return mat.find();
41+
boolean b = mat.find();
42+
if (log.isDebugEnabled()) {
43+
log.debug("[TraceIpGrayDecision] serviceId:{} config.ip:{}, traceIp:{}, testResult:{}",
44+
grayRequest.getServiceId(), configBean.getIp(), traceIp, false);
45+
}
46+
return b;
3847
};
3948
}
4049

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/decision/factory/TrackAttributeGrayDecisionFactory.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
import cn.springcloud.gray.decision.GrayDecision;
44
import cn.springcloud.gray.decision.compare.Comparators;
55
import cn.springcloud.gray.decision.compare.PredicateComparator;
6-
import cn.springcloud.gray.request.GrayHttpTrackInfo;
6+
import cn.springcloud.gray.request.GrayRequest;
7+
import cn.springcloud.gray.request.GrayTrackInfo;
8+
import cn.springcloud.gray.utils.JsonUtils;
79
import lombok.Getter;
810
import lombok.Setter;
911
import org.slf4j.Logger;
@@ -21,17 +23,27 @@ public TrackAttributeGrayDecisionFactory() {
2123
@Override
2224
public GrayDecision apply(Config configBean) {
2325
return args -> {
24-
GrayHttpTrackInfo grayTrackInfo = (GrayHttpTrackInfo) args.getGrayRequest().getGrayTrackInfo();
26+
GrayRequest grayRequest = args.getGrayRequest();
27+
GrayTrackInfo grayTrackInfo = grayRequest.getGrayTrackInfo();
2528
if (grayTrackInfo == null) {
26-
log.warn("没有获取到灰度追踪信息");
29+
log.warn("[TrackAttributeGrayDecision] serviceId:{} 没有获取到灰度追踪信息, testResult:{}",
30+
grayRequest.getServiceId(), false);
2731
return false;
2832
}
2933
PredicateComparator<String> predicateComparator = Comparators.getStringComparator(configBean.getCompareMode());
3034
if (predicateComparator == null) {
31-
log.warn("没有找到相应与compareMode'{}'对应的PredicateComparator", configBean.getCompareMode());
35+
log.warn("[TrackAttributeGrayDecision] serviceId:{} 没有找到相应与compareMode'{}'对应的PredicateComparator, testResult:{}",
36+
grayRequest.getServiceId(), configBean.getCompareMode(), false);
3237
return false;
3338
}
34-
return predicateComparator.test(grayTrackInfo.getAttribute(configBean.getName()), configBean.getValue());
39+
40+
String attributeValue = grayTrackInfo.getAttribute(configBean.getName());
41+
boolean b = predicateComparator.test(attributeValue, configBean.getValue());
42+
if (log.isDebugEnabled()) {
43+
log.debug("[TrackAttributeGrayDecision] serviceId:{}, decisionConfig:{}, attributeValue:{}, testReslut:{}",
44+
grayRequest.getServiceId(), JsonUtils.toJsonString(configBean), attributeValue, b);
45+
}
46+
return b;
3547
};
3648
}
3749

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/decision/factory/TrackAttributesGrayDecisionFactory.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
import cn.springcloud.gray.decision.GrayDecision;
44
import cn.springcloud.gray.decision.compare.Comparators;
55
import cn.springcloud.gray.decision.compare.PredicateComparator;
6-
import cn.springcloud.gray.request.GrayHttpTrackInfo;
6+
import cn.springcloud.gray.request.GrayRequest;
7+
import cn.springcloud.gray.request.GrayTrackInfo;
8+
import cn.springcloud.gray.utils.JsonUtils;
79
import lombok.Getter;
810
import lombok.Setter;
911
import org.slf4j.Logger;
@@ -27,17 +29,27 @@ public TrackAttributesGrayDecisionFactory() {
2729
@Override
2830
public GrayDecision apply(Config configBean) {
2931
return args -> {
30-
GrayHttpTrackInfo grayTrackInfo = (GrayHttpTrackInfo) args.getGrayRequest().getGrayTrackInfo();
32+
GrayRequest grayRequest = args.getGrayRequest();
33+
GrayTrackInfo grayTrackInfo = grayRequest.getGrayTrackInfo();
3134
if (grayTrackInfo == null) {
32-
log.warn("没有获取到灰度追踪信息");
35+
log.warn("[TrackAttributesGrayDecision] serviceId:{} 没有获取到灰度追踪信息, testResult:{}",
36+
grayRequest.getServiceId(), false);
3337
return false;
3438
}
3539
PredicateComparator<Collection<String>> predicateComparator = Comparators.getCollectionStringComparator(configBean.getCompareMode());
3640
if (predicateComparator == null) {
37-
log.warn("没有找到相应与compareMode'{}'对应的PredicateComparator", configBean.getCompareMode());
41+
log.warn("[TrackAttributesGrayDecision] serviceId:{} 没有找到相应与compareMode'{}'对应的PredicateComparator, testResult:{}",
42+
grayRequest.getServiceId(), configBean.getCompareMode(), false);
3843
return false;
3944
}
40-
return predicateComparator.test(Arrays.asList(grayTrackInfo.getAttribute(configBean.getName())), configBean.getValues());
45+
46+
List<String> attributeValues = Arrays.asList(grayTrackInfo.getAttribute(configBean.getName()));
47+
boolean b = predicateComparator.test(attributeValues, configBean.getValues());
48+
if (log.isDebugEnabled()) {
49+
log.debug("[TrackAttributesGrayDecision] serviceId:{}, decisionConfig:{}, attributeValues:{}, testReslut:{}",
50+
grayRequest.getServiceId(), JsonUtils.toJsonString(configBean), attributeValues, b);
51+
}
52+
return b;
4153
};
4254
}
4355

0 commit comments

Comments
 (0)