@@ -33,15 +33,14 @@ import (
3333 "github.com/optimizely/go-sdk/pkg/utils"
3434)
3535
36- var logger = logging .GetLogger ("Client" )
37-
3836// OptimizelyClient is the entry point to the Optimizely SDK
3937type OptimizelyClient struct {
4038 ConfigManager config.ProjectConfigManager
4139 DecisionService decision.Service
4240 EventProcessor event.Processor
4341 notificationCenter notification.Center
4442 execGroup * utils.ExecGroup
43+ logger logging.OptimizelyLogProducer
4544}
4645
4746// Activate returns the key of the variation the user is bucketed into and queues up an impression event to be sent to
@@ -59,14 +58,14 @@ func (o *OptimizelyClient) Activate(experimentKey string, userContext entities.U
5958 err = errors .New ("unexpected error" )
6059 }
6160 errorMessage := fmt .Sprintf ("Activate call, optimizely SDK is panicking with the error:" )
62- logger .Error (errorMessage , err )
63- logger .Debug (string (debug .Stack ()))
61+ o . logger .Error (errorMessage , err )
62+ o . logger .Debug (string (debug .Stack ()))
6463 }
6564 }()
6665
6766 decisionContext , experimentDecision , err := o .getExperimentDecision (experimentKey , userContext )
6867 if err != nil {
69- logger .Error ("received an error while computing experiment decision" , err )
68+ o . logger .Error ("received an error while computing experiment decision" , err )
7069 return result , err
7170 }
7271
@@ -95,14 +94,14 @@ func (o *OptimizelyClient) IsFeatureEnabled(featureKey string, userContext entit
9594 err = errors .New ("unexpected error" )
9695 }
9796 errorMessage := fmt .Sprintf ("IsFeatureEnabled call, optimizely SDK is panicking with the error:" )
98- logger .Error (errorMessage , err )
99- logger .Debug (string (debug .Stack ()))
97+ o . logger .Error (errorMessage , err )
98+ o . logger .Debug (string (debug .Stack ()))
10099 }
101100 }()
102101
103102 decisionContext , featureDecision , err := o .getFeatureDecision (featureKey , "" , userContext )
104103 if err != nil {
105- logger .Error ("received an error while computing feature decision" , err )
104+ o . logger .Error ("received an error while computing feature decision" , err )
106105 return result , err
107106 }
108107
@@ -113,9 +112,9 @@ func (o *OptimizelyClient) IsFeatureEnabled(featureKey string, userContext entit
113112 }
114113
115114 if result {
116- logger .Info (fmt .Sprintf (`Feature "%s" is enabled for user "%s".` , featureKey , userContext .ID ))
115+ o . logger .Info (fmt .Sprintf (`Feature "%s" is enabled for user "%s".` , featureKey , userContext .ID ))
117116 } else {
118- logger .Info (fmt .Sprintf (`Feature "%s" is not enabled for user "%s".` , featureKey , userContext .ID ))
117+ o . logger .Info (fmt .Sprintf (`Feature "%s" is not enabled for user "%s".` , featureKey , userContext .ID ))
119118 }
120119
121120 if featureDecision .Source == decision .FeatureTest && featureDecision .Variation != nil {
@@ -141,14 +140,14 @@ func (o *OptimizelyClient) GetEnabledFeatures(userContext entities.UserContext)
141140 err = errors .New ("unexpected error" )
142141 }
143142 errorMessage := fmt .Sprintf ("GetEnabledFeatures call, optimizely SDK is panicking with the error:" )
144- logger .Error (errorMessage , err )
145- logger .Debug (string (debug .Stack ()))
143+ o . logger .Error (errorMessage , err )
144+ o . logger .Debug (string (debug .Stack ()))
146145 }
147146 }()
148147
149148 projectConfig , err := o .getProjectConfig ()
150149 if err != nil {
151- logger .Error ("Error retrieving ProjectConfig" , err )
150+ o . logger .Error ("Error retrieving ProjectConfig" , err )
152151 return enabledFeatures , err
153152 }
154153
@@ -241,7 +240,7 @@ func (o *OptimizelyClient) GetAllFeatureVariables(featureKey string, userContext
241240 variableMap = make (map [string ]interface {})
242241 decisionContext , featureDecision , err := o .getFeatureDecision (featureKey , "" , userContext )
243242 if err != nil {
244- logger .Error ("Optimizely SDK tracking error" , err )
243+ o . logger .Error ("Optimizely SDK tracking error" , err )
245244 return enabled , variableMap , err
246245 }
247246
@@ -251,7 +250,7 @@ func (o *OptimizelyClient) GetAllFeatureVariables(featureKey string, userContext
251250
252251 feature := decisionContext .Feature
253252 if feature == nil {
254- logger .Warning (fmt .Sprintf (`feature "%s" does not exist` , featureKey ))
253+ o . logger .Warning (fmt .Sprintf (`feature "%s" does not exist` , featureKey ))
255254 return enabled , variableMap , nil
256255 }
257256
@@ -275,7 +274,7 @@ func (o *OptimizelyClient) GetAllFeatureVariables(featureKey string, userContext
275274 out , err = strconv .Atoi (val )
276275 case entities .String :
277276 default :
278- logger .Warning (fmt .Sprintf (`type "%s" is unknown, returning string` , varType ))
277+ o . logger .Warning (fmt .Sprintf (`type "%s" is unknown, returning string` , varType ))
279278 }
280279
281280 variableMap [v .Key ] = out
@@ -298,14 +297,14 @@ func (o *OptimizelyClient) GetVariation(experimentKey string, userContext entiti
298297 err = errors .New ("unexpected error" )
299298 }
300299 errorMessage := fmt .Sprintf ("GetVariation call, optimizely SDK is panicking with the error:" )
301- logger .Error (errorMessage , err )
302- logger .Debug (string (debug .Stack ()))
300+ o . logger .Error (errorMessage , err )
301+ o . logger .Debug (string (debug .Stack ()))
303302 }
304303 }()
305304
306305 _ , experimentDecision , err := o .getExperimentDecision (experimentKey , userContext )
307306 if err != nil {
308- logger .Error ("received an error while computing experiment decision" , err )
307+ o . logger .Error ("received an error while computing experiment decision" , err )
309308 }
310309
311310 if experimentDecision .Variation != nil {
@@ -330,30 +329,30 @@ func (o *OptimizelyClient) Track(eventKey string, userContext entities.UserConte
330329 err = errors .New ("unexpected error" )
331330 }
332331 errorMessage := fmt .Sprintf ("Track call, optimizely SDK is panicking with the error:" )
333- logger .Error (errorMessage , err )
334- logger .Debug (string (debug .Stack ()))
332+ o . logger .Error (errorMessage , err )
333+ o . logger .Debug (string (debug .Stack ()))
335334 }
336335 }()
337336
338337 projectConfig , e := o .getProjectConfig ()
339338 if e != nil {
340- logger .Error ("Optimizely SDK tracking error" , e )
339+ o . logger .Error ("Optimizely SDK tracking error" , e )
341340 return e
342341 }
343342
344343 configEvent , e := projectConfig .GetEventByKey (eventKey )
345344
346345 if e != nil {
347346 errorMessage := fmt .Sprintf (`Unable to get event for key "%s": %s` , eventKey , e )
348- logger .Warning (errorMessage )
347+ o . logger .Warning (errorMessage )
349348 return nil
350349 }
351350
352351 userEvent := event .CreateConversionUserEvent (projectConfig , configEvent , userContext , eventTags )
353352 if o .EventProcessor .ProcessEvent (userEvent ) && o .notificationCenter != nil {
354353 trackNotification := notification.TrackNotification {EventKey : eventKey , UserContext : userContext , EventTags : eventTags , ConversionEvent : * userEvent .Conversion }
355354 if err = o .notificationCenter .Send (notification .Track , trackNotification ); err != nil {
356- logger .Warning ("Problem with sending notification" )
355+ o . logger .Warning ("Problem with sending notification" )
357356 }
358357 }
359358
@@ -373,31 +372,31 @@ func (o *OptimizelyClient) getFeatureDecision(featureKey, variableKey string, us
373372 err = errors .New ("unexpected error" )
374373 }
375374 errorMessage := fmt .Sprintf ("getFeatureDecision call, optimizely SDK is panicking with the error:" )
376- logger .Error (errorMessage , err )
377- logger .Debug (string (debug .Stack ()))
375+ o . logger .Error (errorMessage , err )
376+ o . logger .Debug (string (debug .Stack ()))
378377 }
379378 }()
380379
381380 userID := userContext .ID
382- logger .Debug (fmt .Sprintf (`Evaluating feature "%s" for user "%s".` , featureKey , userID ))
381+ o . logger .Debug (fmt .Sprintf (`Evaluating feature "%s" for user "%s".` , featureKey , userID ))
383382
384383 projectConfig , e := o .getProjectConfig ()
385384 if e != nil {
386- logger .Error ("Error calling getFeatureDecision" , e )
385+ o . logger .Error ("Error calling getFeatureDecision" , e )
387386 return decisionContext , featureDecision , e
388387 }
389388
390389 feature , e := projectConfig .GetFeatureByKey (featureKey )
391390 if e != nil {
392- logger .Warning (fmt .Sprintf (`Could not get feature for key "%s": %s` , featureKey , e ))
391+ o . logger .Warning (fmt .Sprintf (`Could not get feature for key "%s": %s` , featureKey , e ))
393392 return decisionContext , featureDecision , nil
394393 }
395394
396395 variable := entities.Variable {}
397396 if variableKey != "" {
398397 variable , err = projectConfig .GetVariableByKey (feature .Key , variableKey )
399398 if err != nil {
400- logger .Warning (fmt .Sprintf (`Could not get variable for key "%s": %s` , variableKey , err ))
399+ o . logger .Warning (fmt .Sprintf (`Could not get variable for key "%s": %s` , variableKey , err ))
401400 return decisionContext , featureDecision , nil
402401 }
403402 }
@@ -410,7 +409,7 @@ func (o *OptimizelyClient) getFeatureDecision(featureKey, variableKey string, us
410409
411410 featureDecision , err = o .DecisionService .GetFeatureDecision (decisionContext , userContext )
412411 if err != nil {
413- logger .Warning (fmt .Sprintf (`Received error while making a decision for feature "%s": %s` , featureKey , err ))
412+ o . logger .Warning (fmt .Sprintf (`Received error while making a decision for feature "%s": %s` , featureKey , err ))
414413 return decisionContext , featureDecision , nil
415414 }
416415
@@ -420,7 +419,7 @@ func (o *OptimizelyClient) getFeatureDecision(featureKey, variableKey string, us
420419func (o * OptimizelyClient ) getExperimentDecision (experimentKey string , userContext entities.UserContext ) (decisionContext decision.ExperimentDecisionContext , experimentDecision decision.ExperimentDecision , err error ) {
421420
422421 userID := userContext .ID
423- logger .Debug (fmt .Sprintf (`Evaluating experiment "%s" for user "%s".` , experimentKey , userID ))
422+ o . logger .Debug (fmt .Sprintf (`Evaluating experiment "%s" for user "%s".` , experimentKey , userID ))
424423
425424 projectConfig , e := o .getProjectConfig ()
426425 if e != nil {
@@ -429,7 +428,7 @@ func (o *OptimizelyClient) getExperimentDecision(experimentKey string, userConte
429428
430429 experiment , e := projectConfig .GetExperimentByKey (experimentKey )
431430 if e != nil {
432- logger .Warning (fmt .Sprintf (`Could not get experiment for key "%s": %s` , experimentKey , e ))
431+ o . logger .Warning (fmt .Sprintf (`Could not get experiment for key "%s": %s` , experimentKey , e ))
433432 return decisionContext , experimentDecision , nil
434433 }
435434
@@ -440,15 +439,15 @@ func (o *OptimizelyClient) getExperimentDecision(experimentKey string, userConte
440439
441440 experimentDecision , err = o .DecisionService .GetExperimentDecision (decisionContext , userContext )
442441 if err != nil {
443- logger .Warning (fmt .Sprintf (`Received error while making a decision for experiment "%s": %s` , experimentKey , err ))
442+ o . logger .Warning (fmt .Sprintf (`Received error while making a decision for experiment "%s": %s` , experimentKey , err ))
444443 return decisionContext , experimentDecision , nil
445444 }
446445
447446 if experimentDecision .Variation != nil {
448447 result := experimentDecision .Variation .Key
449- logger .Info (fmt .Sprintf (`User "%s" is bucketed into variation "%s" of experiment "%s".` , userContext .ID , result , experimentKey ))
448+ o . logger .Info (fmt .Sprintf (`User "%s" is bucketed into variation "%s" of experiment "%s".` , userContext .ID , result , experimentKey ))
450449 } else {
451- logger .Info (fmt .Sprintf (`User "%s" is not bucketed into any variation for experiment "%s": %s.` , userContext .ID , experimentKey , experimentDecision .Reason ))
450+ o . logger .Info (fmt .Sprintf (`User "%s" is not bucketed into any variation for experiment "%s": %s.` , userContext .ID , experimentKey , experimentDecision .Reason ))
452451 }
453452
454453 return decisionContext , experimentDecision , err
@@ -469,12 +468,12 @@ func (o *OptimizelyClient) OnTrack(callback func(eventKey string, userContext en
469468 }
470469 }
471470 if ! success {
472- logger .Warning (fmt .Sprintf ("Unable to convert notification payload %v into TrackNotification" , payload ))
471+ o . logger .Warning (fmt .Sprintf ("Unable to convert notification payload %v into TrackNotification" , payload ))
473472 }
474473 }
475474 id , err := o .notificationCenter .AddHandler (notification .Track , handler )
476475 if err != nil {
477- logger .Warning ("Problem with adding notification handler" )
476+ o . logger .Warning ("Problem with adding notification handler" )
478477 return 0 , err
479478 }
480479 return id , nil
@@ -486,7 +485,7 @@ func (o *OptimizelyClient) RemoveOnTrack(id int) error {
486485 return fmt .Errorf ("no notification center found" )
487486 }
488487 if err := o .notificationCenter .RemoveHandler (id , notification .Track ); err != nil {
489- logger .Warning ("Problem with removing notification handler" )
488+ o . logger .Warning ("Problem with removing notification handler" )
490489 return err
491490 }
492491 return nil
0 commit comments