class StatsigLogger

Public Class Methods

new(network, statsig_metadata) click to toggle source
# File lib/statsig_logger.rb, line 7
def initialize(network, statsig_metadata)
  @network = network
  @statsig_metadata = statsig_metadata
  @events = []
  @background_flush = Thread.new do
    sleep 60
    flush
  end
end

Public Instance Methods

flush(closing = false) click to toggle source
# File lib/statsig_logger.rb, line 47
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) click to toggle source
# File lib/statsig_logger.rb, line 36
def log_config_exposure(user, config_name, rule_id)
  event = StatsigEvent.new($config_exposure_event)
  event.user = user
  event.metadata = {
    'config' => config_name,
    'ruleID' => rule_id
  }
  event.statsig_metadata = @statsig_metadata
  log_event(event)
end
log_event(event) click to toggle source
# 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) click to toggle source
# File lib/statsig_logger.rb, line 24
def log_gate_exposure(user, gate_name, value, rule_id)
  event = StatsigEvent.new($gate_exposure_event)
  event.user = user
  event.metadata = {
    'gate' => gate_name,
    'gateValue' => value.to_s,
    'ruleID' => rule_id
  }
  event.statsig_metadata = @statsig_metadata
  log_event(event)
end