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