38
38
39
39
package oracle .jdbc .provider .jfr ;
40
40
41
+ import oracle .jdbc .provider .traceeventlisteners .spi .AbstractDiagnosticTraceEventListener ;
42
+
41
43
import java .util .logging .Level ;
42
44
import java .util .logging .Logger ;
43
45
44
- import oracle .jdbc .TraceEventListener ;
45
46
import jdk .jfr .Event ;
46
47
47
48
/**
48
49
* TraceEventListener that creates Java Flight Recorder events for each
49
50
* round trip.
50
51
*/
51
- public class FlightRecorderTraceEventListener implements TraceEventListener {
52
+ public class FlightRecorderTraceEventListener extends AbstractDiagnosticTraceEventListener implements FlightRecorderTraceEventListenerMBean {
52
53
53
- private final boolean enableSensitiveData ;
54
+ /**
55
+ * Name of the property used to enable or disable this listener.
56
+ */
57
+ public static final String FLIGHT_RECORDER_TRACE_EVENT_LISTENER_ENABLED = "oracle.jdbc.provider.jfr.enabled" ;
58
+ /**
59
+ * Name of the property used to enable or disable sensitive data for this
60
+ * listener.
61
+ */
62
+ public static final String FLIGHT_RECORDER_TRACE_EVENT_LISTENER_SENSITIVE_ENABLED = "oracle.jdbc.provider.jfr.sensitive-enabled" ;
54
63
55
64
private static Logger logger = Logger .getLogger (FlightRecorderTraceEventListener .class .getName ());
56
65
57
66
/**
58
67
* Constructor
59
- * @param enableSensitiveData if true, events will contain sensitive information like
68
+ * @param enabled if true, JFR events will be created
69
+ * @param sensitiveDataEnabled if true, events will contain sensitive information like
60
70
* SQL statements and usernames.
61
71
*/
62
- public FlightRecorderTraceEventListener (boolean enableSensitiveData ) {
63
- this . enableSensitiveData = enableSensitiveData ;
64
- logger .log (Level .INFO , "FlightRecorderTraceEventListener started: sensitive data enabled " + this .enableSensitiveData );
72
+ public FlightRecorderTraceEventListener (boolean enabled , boolean sensitiveDataEnabled ) {
73
+ super ( enabled , sensitiveDataEnabled ) ;
74
+ logger .log (Level .INFO , "FlightRecorderTraceEventListener started: sensitive data enabled " + this .sensitiveDataEnabled );
65
75
}
66
76
67
77
/**
@@ -82,7 +92,7 @@ public Object roundTrip(Sequence sequence, TraceContext traceContext, Object use
82
92
event .set (1 , traceContext .databaseOperation ());
83
93
event .set (2 , traceContext .tenant ());
84
94
event .set (3 , traceContext .getSqlId ());
85
- if (enableSensitiveData ) {
95
+ if (sensitiveDataEnabled ) {
86
96
event .set (4 , traceContext .originalSqlText ());
87
97
event .set (5 , traceContext .actualSqlText ());
88
98
event .set (6 , traceContext .user ());
@@ -94,5 +104,15 @@ public Object roundTrip(Sequence sequence, TraceContext traceContext, Object use
94
104
return null ;
95
105
}
96
106
107
+ @ Override
108
+ protected String getEnabledSystemProperty () {
109
+ return FLIGHT_RECORDER_TRACE_EVENT_LISTENER_ENABLED ;
110
+ }
111
+
112
+ @ Override
113
+ protected String getEnableSensitiveDataSystemProperty () {
114
+ return FLIGHT_RECORDER_TRACE_EVENT_LISTENER_SENSITIVE_ENABLED ;
115
+ }
116
+
97
117
}
98
118
0 commit comments