Class: StatsigLogger

Inherits:
Object
  • Object
show all
Defined in:
lib/statsig_logger.rb

Instance Method Summary collapse

Constructor Details

#initialize(network, statsig_metadata) ⇒ StatsigLogger

Returns a new instance of StatsigLogger.



7
8
9
10
11
12
13
14
15
# File 'lib/statsig_logger.rb', line 7

def initialize(network, )
  @network = network
  @statsig_metadata = 
  @events = []
  @background_flush = Thread.new do
    sleep 60
    flush
  end
end

Instance Method Details

#flush(closing = false) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/statsig_logger.rb', line 49

def flush(closing = false)
  if closing
    @background_flush.exit
  end
  if @events.length == 0
    return
  end
  flush_events = @events.map { |e| e.serialize }
  @events = []

  @network.post_logs(flush_events, @statsig_metadata)
end

#log_config_exposure(user, config_name, rule_id, secondary_exposures) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
# File 'lib/statsig_logger.rb', line 37

def log_config_exposure(user, config_name, rule_id, secondary_exposures)
  event = StatsigEvent.new($config_exposure_event)
  event.user = user
  event. = {
    'config' => config_name,
    'ruleID' => rule_id
  }
  event. = @statsig_metadata
  event.secondary_exposures = secondary_exposures.is_a?(Array) ? secondary_exposures : []
  log_event(event)
end

#log_event(event) ⇒ Object



17
18
19
20
21
22
# File 'lib/statsig_logger.rb', line 17

def log_event(event)
  @events.push(event)
  if @events.length >= 500
    flush
  end
end

#log_gate_exposure(user, gate_name, value, rule_id, secondary_exposures) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/statsig_logger.rb', line 24

def log_gate_exposure(user, gate_name, value, rule_id, secondary_exposures)
  event = StatsigEvent.new($gate_exposure_event)
  event.user = user
  event. = {
    'gate' => gate_name,
    'gateValue' => value.to_s,
    'ruleID' => rule_id
  }
  event. = @statsig_metadata
  event.secondary_exposures = secondary_exposures.is_a?(Array) ? secondary_exposures : []
  log_event(event)
end