Skip to content

Commit 054b50d

Browse files
committed
[FSSDK-9840] chore: add traceID & spanID to logs (#407)
* add logging for decide api * log traceid for trace api * log traceid for override api * add traceid for error log * add traceid into logs * clean up * clean up * update unit test
1 parent a221e9d commit 054b50d

File tree

13 files changed

+72
-30
lines changed

13 files changed

+72
-30
lines changed

pkg/handlers/activate.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,12 @@ import (
2222
"fmt"
2323
"net/http"
2424

25+
"github.com/go-chi/render"
26+
2527
"github.com/optimizely/agent/pkg/middleware"
2628
"github.com/optimizely/agent/pkg/optimizely"
27-
2829
"github.com/optimizely/go-sdk/pkg/config"
2930
"github.com/optimizely/go-sdk/pkg/entities"
30-
31-
"github.com/go-chi/render"
3231
)
3332

3433
type keyMap map[string]string
@@ -42,12 +41,13 @@ type ActivateBody struct {
4241
// Activate makes feature and experiment decisions for the selected query parameters.
4342
func Activate(w http.ResponseWriter, r *http.Request) {
4443
optlyClient, err := middleware.GetOptlyClient(r)
45-
logger := middleware.GetLogger(r)
4644
if err != nil {
4745
RenderError(err, http.StatusInternalServerError, w, r)
4846
return
4947
}
5048

49+
logger := middleware.GetLogger(r)
50+
5151
uc, err := getUserContext(r)
5252
if err != nil {
5353
RenderError(err, http.StatusBadRequest, w, r)
@@ -108,6 +108,7 @@ func Activate(w http.ResponseWriter, r *http.Request) {
108108
}
109109

110110
decisions = filterDecisions(r, decisions)
111+
logger.Info().Msgf("Made activate decisions for user %s", uc.ID)
111112
render.JSON(w, r, decisions)
112113
}
113114

pkg/handlers/decide.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,13 @@ import (
2121
"errors"
2222
"net/http"
2323

24-
"github.com/optimizely/agent/pkg/middleware"
24+
"github.com/go-chi/render"
2525

26+
"github.com/optimizely/agent/pkg/middleware"
2627
"github.com/optimizely/go-sdk/pkg/client"
2728
"github.com/optimizely/go-sdk/pkg/decide"
2829
"github.com/optimizely/go-sdk/pkg/decision"
2930
"github.com/optimizely/go-sdk/pkg/odp/segment"
30-
31-
"github.com/go-chi/render"
3231
)
3332

3433
// DecideBody defines the request body for decide API
@@ -108,6 +107,7 @@ func Decide(w http.ResponseWriter, r *http.Request) {
108107
key := keys[0]
109108
logger.Debug().Str("featureKey", key).Msg("fetching feature decision")
110109
d := optimizelyUserContext.Decide(key, decideOptions)
110+
logger.Info().Msgf("Feature %q is enabled for user %s? %t", d.FlagKey, d.UserContext.UserID, d.Enabled)
111111
decideOut := DecideOut{d, d.Variables.ToMap()}
112112
render.JSON(w, r, decideOut)
113113
return
@@ -120,6 +120,7 @@ func Decide(w http.ResponseWriter, r *http.Request) {
120120
for _, d := range decides {
121121
decideOut := DecideOut{d, d.Variables.ToMap()}
122122
decideOuts = append(decideOuts, decideOut)
123+
logger.Info().Msgf("Feature %q is enabled for user %s? %t", d.FlagKey, d.UserContext.UserID, d.Enabled)
123124
}
124125
render.JSON(w, r, decideOuts)
125126
}

pkg/handlers/decide_test.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,17 @@ import (
2626
"net/http/httptest"
2727
"testing"
2828

29+
"github.com/go-chi/chi/v5"
30+
"github.com/stretchr/testify/assert"
31+
"github.com/stretchr/testify/suite"
32+
2933
"github.com/optimizely/agent/pkg/middleware"
3034
"github.com/optimizely/agent/pkg/optimizely"
3135
"github.com/optimizely/agent/pkg/optimizely/optimizelytest"
32-
3336
"github.com/optimizely/go-sdk/pkg/client"
3437
"github.com/optimizely/go-sdk/pkg/decide"
3538
"github.com/optimizely/go-sdk/pkg/entities"
3639
"github.com/optimizely/go-sdk/pkg/odp/segment"
37-
38-
"github.com/go-chi/chi/v5"
39-
"github.com/stretchr/testify/assert"
40-
"github.com/stretchr/testify/suite"
4140
)
4241

4342
type DecideTestSuite struct {

pkg/handlers/get_datafile.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,15 @@ func GetDatafile(w http.ResponseWriter, r *http.Request) {
3434
return
3535
}
3636

37+
logger := middleware.GetLogger(r)
38+
3739
datafile := optlyClient.GetOptimizelyConfig().GetDatafile()
3840
var raw map[string]interface{}
3941
if err = json.Unmarshal([]byte(datafile), &raw); err != nil {
4042
RenderError(err, http.StatusInternalServerError, w, r)
4143
return
4244
}
45+
46+
logger.Info().Msg("Successfully returned datafile")
4347
render.JSON(w, r, raw)
4448
}

pkg/handlers/lookup.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ import (
2121
"errors"
2222
"net/http"
2323

24-
"github.com/optimizely/agent/pkg/middleware"
25-
2624
"github.com/go-chi/render"
25+
26+
"github.com/optimizely/agent/pkg/middleware"
2727
)
2828

2929
type lookupBody struct {
@@ -47,6 +47,8 @@ func Lookup(w http.ResponseWriter, r *http.Request) {
4747
return
4848
}
4949

50+
logger := middleware.GetLogger(r)
51+
5052
if optlyClient.UserProfileService == nil {
5153
RenderError(ErrNoUPS, http.StatusInternalServerError, w, r)
5254
return
@@ -75,5 +77,6 @@ func Lookup(w http.ResponseWriter, r *http.Request) {
7577
experimentBucketMap[k.ExperimentID] = map[string]interface{}{k.Field: v}
7678
}
7779
lookupResponse.ExperimentBucketMap = experimentBucketMap
80+
logger.Info().Msgf("Looked up user profile for user %s", body.UserID)
7881
render.JSON(w, r, lookupResponse)
7982
}

pkg/handlers/optimizely_config.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ func OptimizelyConfig(w http.ResponseWriter, r *http.Request) {
3333
return
3434
}
3535

36+
logger := middleware.GetLogger(r)
37+
3638
conf := optlyClient.GetOptimizelyConfig()
39+
logger.Info().Msg("Successfully returned OptimizelyConfig")
3740
render.JSON(w, r, conf)
3841
}

pkg/handlers/override.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,10 @@ func Override(w http.ResponseWriter, r *http.Request) {
6969
return
7070
}
7171

72-
logger.Debug().Str("experimentKey", experimentKey).Str("variationKey", body.VariationKey).Msg("setting override")
7372
if override, err := optlyClient.SetForcedVariation(r.Context(), experimentKey, body.UserID, body.VariationKey); err != nil {
7473
RenderError(err, http.StatusInternalServerError, w, r)
7574
} else {
75+
logger.Info().Str("experimentKey", experimentKey).Str("variationKey", body.VariationKey).Msg("Successfully set override")
7676
render.JSON(w, r, override)
7777
}
7878
}

pkg/handlers/save.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ package handlers
2020
import (
2121
"net/http"
2222

23+
"github.com/go-chi/render"
24+
2325
"github.com/optimizely/agent/pkg/middleware"
2426
"github.com/optimizely/go-sdk/pkg/decision"
25-
26-
"github.com/go-chi/render"
2727
)
2828

2929
type saveBody struct {
@@ -38,6 +38,8 @@ func Save(w http.ResponseWriter, r *http.Request) {
3838
return
3939
}
4040

41+
logger := middleware.GetLogger(r)
42+
4143
if optlyClient.UserProfileService == nil {
4244
RenderError(ErrNoUPS, http.StatusInternalServerError, w, r)
4345
return
@@ -58,6 +60,7 @@ func Save(w http.ResponseWriter, r *http.Request) {
5860

5961
convertedProfile := convertToUserProfile(body)
6062
optlyClient.UserProfileService.Save(convertedProfile)
63+
logger.Info().Msgf("Saved user profile for user %s", body.UserID)
6164
render.Status(r, http.StatusOK)
6265
}
6366

pkg/handlers/send_odp_event.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ import (
2222
"net/http"
2323

2424
"github.com/go-chi/render"
25-
"github.com/optimizely/go-sdk/pkg/odp/event"
2625

2726
"github.com/optimizely/agent/pkg/middleware"
2827
"github.com/optimizely/agent/pkg/optimizely"
28+
"github.com/optimizely/go-sdk/pkg/odp/event"
2929
)
3030

3131
// SendOdpEvent sends event to ODP platform
@@ -36,6 +36,8 @@ func SendOdpEvent(w http.ResponseWriter, r *http.Request) {
3636
return
3737
}
3838

39+
logger := middleware.GetLogger(r)
40+
3941
body, err := getRequestOdpEvent(r)
4042
if err != nil {
4143
RenderError(err, http.StatusBadRequest, w, r)
@@ -52,6 +54,7 @@ func SendOdpEvent(w http.ResponseWriter, r *http.Request) {
5254
Success: true,
5355
}
5456

57+
logger.Info().Msg("Successfully sent event to ODP platform")
5558
render.JSON(w, r, returnResult)
5659
}
5760

pkg/handlers/track.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ import (
2222
"net/http"
2323

2424
"github.com/go-chi/render"
25-
"github.com/optimizely/go-sdk/pkg/entities"
2625

2726
"github.com/optimizely/agent/pkg/middleware"
27+
"github.com/optimizely/go-sdk/pkg/entities"
2828
)
2929

3030
type trackBody struct {
@@ -40,6 +40,7 @@ func TrackEvent(w http.ResponseWriter, r *http.Request) {
4040
RenderError(err, http.StatusInternalServerError, w, r)
4141
return
4242
}
43+
logger := middleware.GetLogger(r)
4344

4445
var body trackBody
4546
err = ParseRequestBody(r, &body)
@@ -66,6 +67,6 @@ func TrackEvent(w http.ResponseWriter, r *http.Request) {
6667
return
6768
}
6869

69-
middleware.GetLogger(r).Debug().Str("eventKey", eventKey).Msg("tracking event")
70+
logger.Info().Str("eventKey", eventKey).Msg("tracked event")
7071
render.JSON(w, r, track)
7172
}

0 commit comments

Comments
 (0)