module EventTracer

NOTES Appsignal interface to send our usual actions BasicDecorator adds a transparent interface on top of the appsignal interface

Usage: EventTracer.register :appsignal,

  EventTracer::AppsignalLogger.new(Appsignal, allowed_tags: ['tag_1', 'tag_2'])

appsignal_logger.info metrics: [:counter_1, :counter_2]
appsignal_logger.info metrics: { counter_1: { type: :counter, value: 1 }, gauce_2: { type: :gauce, value: 10 } }

Usage: EventTracer.register :base, EventTracer::BaseLogger.new(Logger.new(STDOUT))

NOTES Datadog interface to send our usual actions BasicDecorator adds a transparent interface on top of the datadog interface

Usage: EventTracer.register :datadog,

  EventTracer::DataDogLogger.new(DataDog, allowed_tags: ['tag_1', 'tag_2'])

data_dog_logger.info metrics: [:counter_1, :counter_2]
data_dog_logger.info metrics: { counter_1: { type: :counter, value: 1}, gauce_2: { type: :gauce, value: 10 } }

Constants

VERSION

Public Class Methods

find(code) click to toggle source
# File lib/event_tracer.rb, line 14
def self.find(code)
  @loggers[code]
end
register(code, logger) click to toggle source
# File lib/event_tracer.rb, line 10
def self.register(code, logger)
  @loggers[code] = logger
end

Private Class Methods

registered_logger_codes() click to toggle source
# File lib/event_tracer.rb, line 54
def self.registered_logger_codes
  @loggers.keys
end
selected_loggers(logger_codes) click to toggle source
# File lib/event_tracer.rb, line 44
def self.selected_loggers(logger_codes)
  return unless logger_codes.is_a?(Array)
  return if logger_codes.detect { |code| !code.is_a?(Symbol) }

  selected_codes = logger_codes.uniq & registered_logger_codes

  return if selected_codes.empty?
  @loggers.select { |code, _logger| selected_codes.include?(code) }
end
send_log_messages(log_type, loggers, args) click to toggle source
# File lib/event_tracer.rb, line 30
def self.send_log_messages(log_type, loggers, args)
  result = Result.new

  loggers.each do |code, logger|
    if args[:action] && args[:message]
      result.record code, logger.send(log_type, **args)
    else
      result.record code, LogResult.new(false, 'Fields action & message need to be populated')
    end
  end

  result
end