3
3
import com .exceptionless .exceptionlessclient .exceptions .ClientException ;
4
4
import com .exceptionless .exceptionlessclient .lastreferenceidmanager .DefaultLastReferenceIdManager ;
5
5
import com .exceptionless .exceptionlessclient .lastreferenceidmanager .LastReferenceIdManagerIF ;
6
- import com .exceptionless .exceptionlessclient .logging .LogIF ;
7
- import com .exceptionless .exceptionlessclient .logging .NullLog ;
6
+ import com .exceptionless .exceptionlessclient .logging .LogCapturerAppender ;
7
+ import com .exceptionless .exceptionlessclient .logging .LogCapturerIF ;
8
+ import com .exceptionless .exceptionlessclient .logging .NullLogCapturer ;
8
9
import com .exceptionless .exceptionlessclient .models .EventPluginContext ;
9
10
import com .exceptionless .exceptionlessclient .models .UserInfo ;
10
11
import com .exceptionless .exceptionlessclient .models .enums .EventPropertyKey ;
22
23
import com .exceptionless .exceptionlessclient .submission .SubmissionClientIF ;
23
24
import lombok .Builder ;
24
25
import lombok .Getter ;
26
+ import org .slf4j .Logger ;
27
+ import org .slf4j .LoggerFactory ;
25
28
26
29
import java .util .*;
27
30
import java .util .function .BiConsumer ;
28
31
import java .util .function .Consumer ;
29
32
30
33
public class ConfigurationManager {
31
- @ Getter private EnvironmentInfoCollectorIF environmentInfoCollector ;
32
- @ Getter private ErrorParserIF errorParser ;
33
- @ Getter private LastReferenceIdManagerIF lastReferenceIdManager ;
34
- @ Getter private LogIF log ;
35
- @ Getter private ModuleCollectorIF moduleCollector ;
36
- @ Getter private RequestInfoCollectorIF requestInfoCollector ;
37
- @ Getter private SubmissionClientIF submissionClient ;
38
- @ Getter private EventQueueIF queue ;
39
- @ Getter private Configuration configuration ;
40
- @ Getter private Set <String > defaultTags ;
41
- @ Getter private Map <String , Object > defaultData ;
42
- private List <Consumer <ConfigurationManager >> onChangedHandlers ;
43
- @ Getter private SettingsManager settingsManager ;
44
- @ Getter private Set <String > userAgentBotPatterns ;
45
- @ Getter private PrivateInformationInclusions privateInformationInclusions ;
46
- private Set <String > dataExclusions ;
47
- private PluginManager pluginManager ;
34
+ private static final Logger LOG = LoggerFactory .getLogger (ConfigurationManager .class );
35
+
36
+ @ Getter private final EnvironmentInfoCollectorIF environmentInfoCollector ;
37
+ @ Getter private final ErrorParserIF errorParser ;
38
+ @ Getter private final LastReferenceIdManagerIF lastReferenceIdManager ;
39
+ @ Getter private final ModuleCollectorIF moduleCollector ;
40
+ @ Getter private final RequestInfoCollectorIF requestInfoCollector ;
41
+ @ Getter private final SubmissionClientIF submissionClient ;
42
+ @ Getter private final EventQueueIF queue ;
43
+ @ Getter private final Configuration configuration ;
44
+ @ Getter private final Set <String > defaultTags ;
45
+ @ Getter private final Map <String , Object > defaultData ;
46
+ private final List <Consumer <ConfigurationManager >> onChangedHandlers ;
47
+ @ Getter private final SettingsManager settingsManager ;
48
+ private final Set <String > userAgentBotPatterns ;
49
+ @ Getter private final PrivateInformationInclusions privateInformationInclusions ;
50
+ private final Set <String > dataExclusions ;
51
+ private final PluginManager pluginManager ;
52
+ @ Getter private final StorageProviderIF storageProvider ;
48
53
49
54
@ Builder
50
55
public ConfigurationManager (
51
56
EnvironmentInfoCollectorIF environmentInfoCollector ,
52
57
ErrorParserIF errorParser ,
53
58
LastReferenceIdManagerIF lastReferenceIdManager ,
54
- LogIF log ,
59
+ LogCapturerIF logCatpurer ,
55
60
ModuleCollectorIF moduleCollector ,
56
61
RequestInfoCollectorIF requestInfoCollector ,
57
62
SubmissionClientIF submissionClient ,
@@ -61,10 +66,9 @@ public ConfigurationManager(
61
66
Configuration configuration ,
62
67
Integer maxQueueItems ,
63
68
Integer processingIntervalInSecs ) {
64
- this .log = log == null ? NullLog .builder ().build () : log ;
65
69
this .environmentInfoCollector =
66
70
environmentInfoCollector == null
67
- ? DefaultEnvironmentInfoCollector .builder ().log ( this . log ). build ()
71
+ ? DefaultEnvironmentInfoCollector .builder ().build ()
68
72
: environmentInfoCollector ;
69
73
this .errorParser = errorParser == null ? DefaultErrorParser .builder ().build () : errorParser ;
70
74
this .lastReferenceIdManager =
@@ -75,48 +79,48 @@ public ConfigurationManager(
75
79
moduleCollector == null ? DefaultModuleCollector .builder ().build () : moduleCollector ;
76
80
this .requestInfoCollector =
77
81
requestInfoCollector == null
78
- ? DefaultRequestInfoCollector .builder ().log ( this . log ). build ()
82
+ ? DefaultRequestInfoCollector .builder ().build ()
79
83
: requestInfoCollector ;
84
+ this .storageProvider =
85
+ storageProvider == null
86
+ ? InMemoryStorageProvider .builder ().maxQueueItems (maxQueueItems ).build ()
87
+ : storageProvider ;
88
+ this .configuration =
89
+ configuration == null ? Configuration .defaultConfiguration () : configuration ;
80
90
this .settingsManager =
81
91
SettingsManager .builder ()
82
92
.settingsClient (
83
93
settingsClient == null
84
94
? DefaultSettingsClient .builder ().configuration (this .configuration ).build ()
85
95
: settingsClient )
86
- .log ( log )
96
+ .storageProvider ( this . storageProvider )
87
97
.build ();
88
98
this .userAgentBotPatterns = new HashSet <>();
89
- this .configuration =
90
- configuration == null ? Configuration .defaultConfiguration () : configuration ;
91
99
this .submissionClient =
92
100
submissionClient == null
93
101
? DefaultSubmissionClient .builder ()
94
102
.settingsManager (this .settingsManager )
95
103
.configuration (this .configuration )
96
- .log (this .log )
97
104
.build ()
98
105
: submissionClient ;
99
106
this .queue =
100
107
queue == null
101
108
? DefaultEventQueue .builder ()
102
109
.configuration (this .configuration )
103
- .log (this .log )
104
110
.processingIntervalInSecs (processingIntervalInSecs )
105
- .storageProvider (
106
- storageProvider == null
107
- ? InMemoryStorageProvider .builder ().maxQueueItems (maxQueueItems ).build ()
108
- : storageProvider )
111
+ .storageProvider (this .storageProvider )
109
112
.submissionClient (this .submissionClient )
110
113
.build ()
111
114
: queue ;
112
- this .pluginManager = PluginManager .builder ().log ( this . log ). build ();
115
+ this .pluginManager = PluginManager .builder ().build ();
113
116
this .defaultData = new HashMap <>();
114
117
this .defaultTags = new HashSet <>();
115
118
this .onChangedHandlers = new ArrayList <>();
116
119
this .dataExclusions = new HashSet <>();
117
120
this .privateInformationInclusions = PrivateInformationInclusions .builder ().build ();
118
- this .pluginManager = PluginManager .builder ().log (this .log ).build ();
119
121
checkApiKeyIsValid ();
122
+ addPropertyChangeListeners ();
123
+ addLogCapturer (logCatpurer );
120
124
}
121
125
122
126
private void addPropertyChangeListeners () {
@@ -134,6 +138,18 @@ private void checkApiKeyIsValid() {
134
138
String .format ("Apikey is not valid: [%s]" , this .configuration .getApiKey ()));
135
139
}
136
140
141
+ private void addLogCapturer (LogCapturerIF logCatpurer ) {
142
+ logCatpurer = logCatpurer == null ? NullLogCapturer .builder ().build () : logCatpurer ;
143
+
144
+ ch .qos .logback .classic .Logger logBackRootLogger =
145
+ (ch .qos .logback .classic .Logger ) LoggerFactory .getLogger (Logger .ROOT_LOGGER_NAME );
146
+ logBackRootLogger .addAppender (LogCapturerAppender .builder ().logCapturer (logCatpurer ).build ());
147
+ }
148
+
149
+ public void addDefaultTags (String ... tags ) {
150
+ defaultTags .addAll (Arrays .asList (tags ));
151
+ }
152
+
137
153
public void addDataExclusions (String ... exclusions ) {
138
154
dataExclusions .addAll (Arrays .asList (exclusions ));
139
155
}
@@ -148,8 +164,15 @@ public Set<String> getDataExclusions() {
148
164
return combinedExclusions ;
149
165
}
150
166
167
+ public Set <String > getUserAgentBotPatterns () {
168
+ Set <String > combinedPatterns =
169
+ settingsManager .getSavedServerSettings ().getUserAgentBotPatterns ();
170
+ combinedPatterns .addAll (userAgentBotPatterns );
171
+ return combinedPatterns ;
172
+ }
173
+
151
174
public void submitSessionHeartbeat (String sessionOrUserId ) {
152
- log .info (String .format ("Submitting session heartbeat: %s" , sessionOrUserId ));
175
+ LOG .info (String .format ("Submitting session heartbeat: %s" , sessionOrUserId ));
153
176
submissionClient .sendHeartBeat (sessionOrUserId , false );
154
177
}
155
178
@@ -205,12 +228,12 @@ public void setUserIdentity(UserInfo userInfo) {
205
228
this .defaultData .put (EventPropertyKey .USER .value (), userInfo );
206
229
}
207
230
208
- public void useSession () {
231
+ public void useSessions () {
209
232
useSessions (30000 );
210
233
}
211
234
212
- public void useSessions (int heartbeatInterval ) {
213
- addPlugin (HeartbeatPlugin .builder ().heartbeatInterval ( heartbeatInterval ).build ());
235
+ public void useSessions (int heartbeatIntervalInSecs ) {
236
+ addPlugin (HeartbeatPlugin .builder ().heartbeatIntervalInSecs ( heartbeatIntervalInSecs ).build ());
214
237
}
215
238
216
239
public void onChanged (Consumer <ConfigurationManager > onChangedHandler ) {
@@ -222,7 +245,7 @@ private void changed() {
222
245
try {
223
246
onChangedHandler .accept (this );
224
247
} catch (Exception e ) {
225
- log .error (String .format ("Error calling on changed handler: %s" , e .getMessage ()), e );
248
+ LOG .error (String .format ("Error calling on changed handler: %s" , e .getMessage ()), e );
226
249
}
227
250
}
228
251
}
0 commit comments