7
7
8
8
package com .salesforce .grpc .contrib .interceptor ;
9
9
10
+ import java .util .Arrays ;
11
+ import java .util .EnumSet ;
12
+
10
13
import org .slf4j .Logger ;
11
14
import org .slf4j .LoggerFactory ;
12
15
@@ -31,13 +34,13 @@ public class DebugClientInterceptor implements ClientInterceptor {
31
34
private static final String RESPONSE = "Response" ;
32
35
33
36
public enum Level {
34
- NONE , STATUS , HEADERS , MESSAGE
37
+ STATUS , HEADERS , MESSAGE
35
38
}
36
39
37
- private Level level = Level .NONE ;
40
+ private EnumSet < Level > levels = EnumSet . of ( Level .STATUS ) ;
38
41
39
- public DebugClientInterceptor (Level level ) {
40
- this .level = level ;
42
+ public DebugClientInterceptor (Level ... levels ) {
43
+ this .levels = EnumSet . copyOf ( Arrays . asList ( levels )) ;
41
44
}
42
45
43
46
@ Override
@@ -56,10 +59,7 @@ public void start(Listener<RespT> responseListener, Metadata headers) {
56
59
logHeaders (REQUEST , headers );
57
60
super .start (
58
61
new ForwardingClientCallListener .SimpleForwardingClientCallListener <RespT >(responseListener ) {
59
- /**
60
- * for logging level of {@code HEADERS} or {@code MESSAGE}, the status will be
61
- * logged after headers and message
62
- */
62
+
63
63
@ Override
64
64
public void onClose (Status status , Metadata trailers ) {
65
65
logStatus (status , method );
@@ -82,38 +82,32 @@ public void onMessage(RespT message) {
82
82
};
83
83
}
84
84
85
- /**
86
- * override this method to change the way outbound request method name is logged.
87
- */
88
- protected <ReqT , RespT > void logMethod (MethodDescriptor <ReqT , RespT > method ) {
89
- if (level == Level .STATUS || level == Level .HEADERS || level == Level .MESSAGE ) {
90
- logger .debug ("{} path : {}" , REQUEST , method .getFullMethodName ());
85
+ private <ReqT , RespT > void logMethod (MethodDescriptor <ReqT , RespT > method ) {
86
+ if (levels .contains (Level .STATUS )) {
87
+ log (String .format ("%s path : %s" , REQUEST , method .getFullMethodName ()));
91
88
}
92
89
}
93
90
94
- /**
95
- * override this method to change the way status and method name is logged for inbound response.
96
- */
97
- protected <ReqT , RespT > void logStatus (Status status , MethodDescriptor <ReqT , RespT > method ) {
98
- if (level == Level .STATUS || level == Level .HEADERS || level == Level .MESSAGE ) {
99
- logger .debug ("{} status: {} {} for path :{}" , RESPONSE , status .getCode ().value (), status .getCode (),
100
- method .getFullMethodName ());
91
+ private <ReqT , RespT > void logStatus (Status status , MethodDescriptor <ReqT , RespT > method ) {
92
+ if (levels .contains (Level .STATUS )) {
93
+ log (String .format ("%s status: %s %s for path : %s" , RESPONSE , status .getCode ().value (), status .getCode (),
94
+ method .getFullMethodName ()));
101
95
}
102
96
}
103
- /**
104
- * override this method to change the way headers are logged.
105
- */
106
- protected void logHeaders (String type , Metadata headers ) {
107
- if (level == Level .HEADERS || level == Level .MESSAGE ) {
108
- logger .debug ("{} headers : {}" , type , headers );
97
+
98
+ private void logHeaders (String type , Metadata headers ) {
99
+ if (levels .contains (Level .HEADERS )) {
100
+ log (String .format ("%s headers : %s" , type , headers ));
109
101
}
110
102
}
111
- /**
112
- * override this method to change the way message is logged.
113
- */
114
- protected <RespT > void logMessage (String type , RespT message ) {
115
- if (this .level == Level .MESSAGE ) {
116
- logger .debug ("{} message : {}" , type , message );
103
+
104
+ private <RespT > void logMessage (String type , RespT message ) {
105
+ if (levels .contains (Level .MESSAGE )) {
106
+ log (String .format ("%s message : %s" , type , message ));
117
107
}
118
108
}
109
+
110
+ protected void log (String logmessage ) {
111
+ logger .debug (logmessage );
112
+ }
119
113
}
0 commit comments