33import com .exceptionless .exceptionlessclient .exceptions .ClientException ;
44import com .exceptionless .exceptionlessclient .lastreferenceidmanager .DefaultLastReferenceIdManager ;
55import 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 ;
89import com .exceptionless .exceptionlessclient .models .EventPluginContext ;
910import com .exceptionless .exceptionlessclient .models .UserInfo ;
1011import com .exceptionless .exceptionlessclient .models .enums .EventPropertyKey ;
2223import com .exceptionless .exceptionlessclient .submission .SubmissionClientIF ;
2324import lombok .Builder ;
2425import lombok .Getter ;
26+ import org .slf4j .Logger ;
27+ import org .slf4j .LoggerFactory ;
2528
2629import java .util .*;
2730import java .util .function .BiConsumer ;
2831import java .util .function .Consumer ;
2932
3033public 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 ;
4853
4954 @ Builder
5055 public ConfigurationManager (
5156 EnvironmentInfoCollectorIF environmentInfoCollector ,
5257 ErrorParserIF errorParser ,
5358 LastReferenceIdManagerIF lastReferenceIdManager ,
54- LogIF log ,
59+ LogCapturerIF logCatpurer ,
5560 ModuleCollectorIF moduleCollector ,
5661 RequestInfoCollectorIF requestInfoCollector ,
5762 SubmissionClientIF submissionClient ,
@@ -61,10 +66,9 @@ public ConfigurationManager(
6166 Configuration configuration ,
6267 Integer maxQueueItems ,
6368 Integer processingIntervalInSecs ) {
64- this .log = log == null ? NullLog .builder ().build () : log ;
6569 this .environmentInfoCollector =
6670 environmentInfoCollector == null
67- ? DefaultEnvironmentInfoCollector .builder ().log ( this . log ). build ()
71+ ? DefaultEnvironmentInfoCollector .builder ().build ()
6872 : environmentInfoCollector ;
6973 this .errorParser = errorParser == null ? DefaultErrorParser .builder ().build () : errorParser ;
7074 this .lastReferenceIdManager =
@@ -75,48 +79,48 @@ public ConfigurationManager(
7579 moduleCollector == null ? DefaultModuleCollector .builder ().build () : moduleCollector ;
7680 this .requestInfoCollector =
7781 requestInfoCollector == null
78- ? DefaultRequestInfoCollector .builder ().log ( this . log ). build ()
82+ ? DefaultRequestInfoCollector .builder ().build ()
7983 : requestInfoCollector ;
84+ this .storageProvider =
85+ storageProvider == null
86+ ? InMemoryStorageProvider .builder ().maxQueueItems (maxQueueItems ).build ()
87+ : storageProvider ;
88+ this .configuration =
89+ configuration == null ? Configuration .defaultConfiguration () : configuration ;
8090 this .settingsManager =
8191 SettingsManager .builder ()
8292 .settingsClient (
8393 settingsClient == null
8494 ? DefaultSettingsClient .builder ().configuration (this .configuration ).build ()
8595 : settingsClient )
86- .log ( log )
96+ .storageProvider ( this . storageProvider )
8797 .build ();
8898 this .userAgentBotPatterns = new HashSet <>();
89- this .configuration =
90- configuration == null ? Configuration .defaultConfiguration () : configuration ;
9199 this .submissionClient =
92100 submissionClient == null
93101 ? DefaultSubmissionClient .builder ()
94102 .settingsManager (this .settingsManager )
95103 .configuration (this .configuration )
96- .log (this .log )
97104 .build ()
98105 : submissionClient ;
99106 this .queue =
100107 queue == null
101108 ? DefaultEventQueue .builder ()
102109 .configuration (this .configuration )
103- .log (this .log )
104110 .processingIntervalInSecs (processingIntervalInSecs )
105- .storageProvider (
106- storageProvider == null
107- ? InMemoryStorageProvider .builder ().maxQueueItems (maxQueueItems ).build ()
108- : storageProvider )
111+ .storageProvider (this .storageProvider )
109112 .submissionClient (this .submissionClient )
110113 .build ()
111114 : queue ;
112- this .pluginManager = PluginManager .builder ().log ( this . log ). build ();
115+ this .pluginManager = PluginManager .builder ().build ();
113116 this .defaultData = new HashMap <>();
114117 this .defaultTags = new HashSet <>();
115118 this .onChangedHandlers = new ArrayList <>();
116119 this .dataExclusions = new HashSet <>();
117120 this .privateInformationInclusions = PrivateInformationInclusions .builder ().build ();
118- this .pluginManager = PluginManager .builder ().log (this .log ).build ();
119121 checkApiKeyIsValid ();
122+ addPropertyChangeListeners ();
123+ addLogCapturer (logCatpurer );
120124 }
121125
122126 private void addPropertyChangeListeners () {
@@ -134,6 +138,18 @@ private void checkApiKeyIsValid() {
134138 String .format ("Apikey is not valid: [%s]" , this .configuration .getApiKey ()));
135139 }
136140
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+
137153 public void addDataExclusions (String ... exclusions ) {
138154 dataExclusions .addAll (Arrays .asList (exclusions ));
139155 }
@@ -148,8 +164,15 @@ public Set<String> getDataExclusions() {
148164 return combinedExclusions ;
149165 }
150166
167+ public Set <String > getUserAgentBotPatterns () {
168+ Set <String > combinedPatterns =
169+ settingsManager .getSavedServerSettings ().getUserAgentBotPatterns ();
170+ combinedPatterns .addAll (userAgentBotPatterns );
171+ return combinedPatterns ;
172+ }
173+
151174 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 ));
153176 submissionClient .sendHeartBeat (sessionOrUserId , false );
154177 }
155178
@@ -205,12 +228,12 @@ public void setUserIdentity(UserInfo userInfo) {
205228 this .defaultData .put (EventPropertyKey .USER .value (), userInfo );
206229 }
207230
208- public void useSession () {
231+ public void useSessions () {
209232 useSessions (30000 );
210233 }
211234
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 ());
214237 }
215238
216239 public void onChanged (Consumer <ConfigurationManager > onChangedHandler ) {
@@ -222,7 +245,7 @@ private void changed() {
222245 try {
223246 onChangedHandler .accept (this );
224247 } 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 );
226249 }
227250 }
228251 }
0 commit comments