Class: Flipper::Instrumentation::LogSubscriber
- Inherits:
-
ActiveSupport::LogSubscriber
- Object
- ActiveSupport::LogSubscriber
- Flipper::Instrumentation::LogSubscriber
- Defined in:
- lib/flipper/instrumentation/log_subscriber.rb
Instance Method Summary collapse
-
#adapter_operation(event) ⇒ Object
Logs an adapter operation.
-
#feature_operation(event) ⇒ Object
Logs a feature operation.
-
#gate_operation(event) ⇒ Object
Logs a gate operation.
Instance Method Details
#adapter_operation(event) ⇒ Object
Logs an adapter operation. If operation is for a feature, then that feature is included in log output.
Example Output
# log output for adapter operation with feature
# Flipper feature(search) adapter(memory) set_add("search/actors") (0.0ms) [ result=#<Set: {"1"}> value="1" ]
# log output for adapter operation with no feature
# Flipper adapter(memory) set_add("features") (0.0ms) [ result=#<Set: {"search"}> value="search" ]
Returns nothing.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/flipper/instrumentation/log_subscriber.rb', line 48 def adapter_operation(event) return unless logger.debug? adapter_name = event.payload[:adapter_name] operation = event.payload[:operation] result = event.payload[:result] value = event.payload[:value] key = event.payload[:key] feature_description = if key.respond_to?(:feature_name) "Flipper feature(#{key.feature_name})" else "Flipper" end adapter_description = "adapter(#{adapter_name})" operation_description = "#{operation}(#{key.to_s.inspect})" description = "#{feature_description} #{adapter_description} #{operation_description}" details = "result=#{result.inspect}" if event.payload.key?(:value) details += " value=#{value.inspect}" end name = '%s (%.1fms)' % [description, event.duration] debug " #{color(name, CYAN, true)} [ #{details} ]" end |
#feature_operation(event) ⇒ Object
Logs a feature operation.
Example Output
flipper[:search].enabled?(user)
# Flipper feature(search) enabled? false (1.2ms) [ thing=#<struct flipper_id="1"> ]
Returns nothing.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/flipper/instrumentation/log_subscriber.rb', line 16 def feature_operation(event) return unless logger.debug? feature_name = event.payload[:feature_name] gate_name = event.payload[:gate_name] operation = event.payload[:operation] result = event.payload[:result] thing = event.payload[:thing] description = "Flipper feature(#{feature_name}) #{operation} #{result.inspect}" details = "thing=#{thing.inspect}" unless gate_name.nil? details += " gate_name=#{gate_name}" end name = '%s (%.1fms)' % [description, event.duration] debug " #{color(name, CYAN, true)} [ #{details} ]" end |
#gate_operation(event) ⇒ Object
Logs a gate operation.
Example Output
flipper[:search].enabled?(user)
# Flipper feature(search) gate(boolean) open false (0.1ms) [ thing=#<struct flipper_id="1"> ]
# Flipper feature(search) gate(group) open false (0.1ms) [ thing=#<struct flipper_id="1"> ]
# Flipper feature(search) gate(actor) open false (0.1ms) [ thing=#<struct flipper_id="1"> ]
# Flipper feature(search) gate(percentage_of_actors) open false (0.1ms) [ thing=#<struct flipper_id="1"> ]
# Flipper feature(search) gate(percentage_of_random) open false (0.1ms) [ thing=#<struct flipper_id="1"> ]
Returns nothing.
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/flipper/instrumentation/log_subscriber.rb', line 88 def gate_operation(event) return unless logger.debug? feature_name = event.payload[:feature_name] gate_name = event.payload[:gate_name] operation = event.payload[:operation] result = event.payload[:result] thing = event.payload[:thing] description = "Flipper feature(#{feature_name}) gate(#{gate_name}) #{operation} #{result.inspect}" details = "thing=#{thing.inspect}" name = '%s (%.1fms)' % [description, event.duration] debug " #{color(name, CYAN, true)} [ #{details} ]" end |