@@ -8,16 +8,18 @@ import (
88)
99
1010const (
11- DOMAIN_KEY = "domain"
12- PROVIDER_NAME_KEY = "provider_name"
13- FLAG_KEY_KEY = "flag_key"
14- DEFAULT_VALUE_KEY = "default_value"
15- EVALUATION_CONTEXT_KEY = "evaluation_context"
16- ERROR_MESSAGE_KEY = "error_message"
17- REASON_KEY = "reason"
18- VARIANT_KEY = "variant"
19- VALUE_KEY = "value"
20- STAGE_KEY = "stage"
11+ domainKey = "domain"
12+ providerNameKey = "provider_name"
13+ flagKeyKey = "flag_key"
14+ defaultValueKey = "default_value"
15+ evaluationContextKey = "evaluation_context"
16+ targetingKeyKey = "targeting_key"
17+ attributesKey = "attributes"
18+ errorMessageKey = "error_message"
19+ reasonKey = "reason"
20+ variantKey = "variant"
21+ valueKey = "value"
22+ stageKey = "stage"
2123)
2224
2325// LoggingHook is a [of.Hook] that logs the flag evaluation lifecycle.
@@ -26,46 +28,35 @@ type LoggingHook struct {
2628 logger * slog.Logger
2729}
2830
29- // NewLoggingHook returns a new [LoggingHook] with the default logger.
30- // To provide a custom logger, use [NewCustomLoggingHook].
31- func NewLoggingHook (includeEvaluationContext bool ) (* LoggingHook , error ) {
32- return NewCustomLoggingHook (includeEvaluationContext , slog .Default ())
33- }
34-
35- // NewCustomLoggingHook returns a new [LoggingHook] with the provided logger.
36- func NewCustomLoggingHook (includeEvaluationContext bool , logger * slog.Logger ) (* LoggingHook , error ) {
31+ // NewLoggingHook returns a new [LoggingHook] with the provided logger.
32+ func NewLoggingHook (includeEvaluationContext bool , logger * slog.Logger ) * LoggingHook {
3733 return & LoggingHook {
3834 logger : logger ,
3935 includeEvaluationContext : includeEvaluationContext ,
40- }, nil
41- }
42-
43- type MarshaledEvaluationContext struct {
44- TargetingKey string
45- Attributes map [string ]any
36+ }
4637}
4738
4839func (h * LoggingHook ) buildArgs (hookContext of.HookContext ) []slog.Attr {
4940 args := []slog.Attr {
50- slog .String (DOMAIN_KEY , hookContext .ClientMetadata ().Domain ()),
51- slog .String (PROVIDER_NAME_KEY , hookContext .ProviderMetadata ().Name ),
52- slog .String (FLAG_KEY_KEY , hookContext .FlagKey ()),
53- slog .Any (DEFAULT_VALUE_KEY , hookContext .DefaultValue ()),
41+ slog .String (domainKey , hookContext .ClientMetadata ().Domain ()),
42+ slog .String (providerNameKey , hookContext .ProviderMetadata ().Name ),
43+ slog .String (flagKeyKey , hookContext .FlagKey ()),
44+ slog .Any (defaultValueKey , hookContext .DefaultValue ()),
5445 }
5546 if h .includeEvaluationContext {
56- marshaledEvaluationContext := MarshaledEvaluationContext {
57- TargetingKey : hookContext . EvaluationContext (). TargetingKey () ,
58- Attributes : hookContext .EvaluationContext ().Attributes ( ),
59- }
60- args = append ( args , slog . Any ( EVALUATION_CONTEXT_KEY , marshaledEvaluationContext ))
47+ args = append ( args ,
48+ slog . Group ( evaluationContextKey ,
49+ slog . String ( targetingKeyKey , hookContext .EvaluationContext ().TargetingKey () ),
50+ slog . Any ( attributesKey , hookContext . EvaluationContext (). Attributes ()),
51+ ))
6152 }
6253
6354 return args
6455}
6556
6657func (h * LoggingHook ) Before (ctx context.Context , hookContext of.HookContext , hookHints of.HookHints ) (* of.EvaluationContext , error ) {
6758 args := h .buildArgs (hookContext )
68- args = append (args , slog .String (STAGE_KEY , "before" ))
59+ args = append (args , slog .String (stageKey , "before" ))
6960 h .logger .LogAttrs (ctx , slog .LevelDebug , "Before stage" , args ... )
7061 return nil , nil
7162}
@@ -75,10 +66,10 @@ func (h *LoggingHook) After(ctx context.Context, hookContext of.HookContext,
7566) error {
7667 args := h .buildArgs (hookContext )
7768 args = append (args ,
78- slog .String (REASON_KEY , string (flagEvaluationDetails .Reason )),
79- slog .String (VARIANT_KEY , flagEvaluationDetails .Variant ),
80- slog .Any (VALUE_KEY , flagEvaluationDetails .Value ),
81- slog .String (STAGE_KEY , "after" ),
69+ slog .String (reasonKey , string (flagEvaluationDetails .Reason )),
70+ slog .String (variantKey , flagEvaluationDetails .Variant ),
71+ slog .Any (valueKey , flagEvaluationDetails .Value ),
72+ slog .String (stageKey , "after" ),
8273 )
8374 h .logger .LogAttrs (ctx , slog .LevelDebug , "After stage" , args ... )
8475 return nil
@@ -87,8 +78,8 @@ func (h *LoggingHook) After(ctx context.Context, hookContext of.HookContext,
8778func (h * LoggingHook ) Error (ctx context.Context , hookContext of.HookContext , err error , hookHints of.HookHints ) {
8879 args := h .buildArgs (hookContext )
8980 args = append (args ,
90- slog .Any (ERROR_MESSAGE_KEY , err ),
91- slog .String (STAGE_KEY , "error" ),
81+ slog .Any (errorMessageKey , err ),
82+ slog .String (stageKey , "error" ),
9283 )
9384 h .logger .LogAttrs (ctx , slog .LevelError , "Error stage" , args ... )
9485}
0 commit comments