Module: EventTracer

Defined in:
lib/event_tracer/base_logger.rb,
lib/event_tracer.rb,
lib/event_tracer/buffer.rb,
lib/event_tracer/config.rb,
lib/event_tracer/version.rb,
lib/event_tracer/log_result.rb,
lib/event_tracer/metric_logger.rb,
lib/event_tracer/datadog_logger.rb,
lib/event_tracer/basic_decorator.rb,
lib/event_tracer/buffered_logger.rb,
lib/event_tracer/appsignal_logger.rb,
lib/event_tracer/dynamo_db/client.rb,
lib/event_tracer/dynamo_db/logger.rb,
lib/event_tracer/dynamo_db/worker.rb,
lib/event_tracer/prometheus_logger.rb,
lib/event_tracer/error_with_payload.rb,
lib/event_tracer/dynamo_db/default_processor.rb

Overview

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 }, gauge_2: { type: :gauge, value: 10 } }

Defined Under Namespace

Modules: DynamoDB Classes: AppsignalLogger, BaseLogger, BasicDecorator, Buffer, BufferedLogger, Config, DatadogLogger, ErrorWithPayload, LogResult, MetricLogger, PrometheusLogger, Result

Constant Summary collapse

LOG_TYPES =
%i(debug info warn error)
VERSION =
'0.6.4'.freeze

Class Method Summary collapse

Class Method Details

.find(code) ⇒ Object



14
15
16
# File 'lib/event_tracer.rb', line 14

def self.find(code)
  @loggers[code]
end

.flush_allObject



28
29
30
31
32
33
34
# File 'lib/event_tracer.rb', line 28

def self.flush_all
  @loggers.map do |_code, logger|
    next unless logger.is_a?(EventTracer::BufferedLogger)

    logger.flush
  end
end

.register(code, logger) ⇒ Object



10
11
12
# File 'lib/event_tracer.rb', line 10

def self.register(code, logger)
  @loggers[code] = logger
end

.registered_logger_codesObject



70
71
72
# File 'lib/event_tracer.rb', line 70

def self.registered_logger_codes
  @loggers.keys
end

.selected_loggers(logger_codes) ⇒ Object



60
61
62
63
64
65
66
67
68
# File 'lib/event_tracer.rb', line 60

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) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/event_tracer.rb', line 38

def self.send_log_messages(log_type, loggers, args)
  result = Result.new

  loggers.each do |code, logger|
    if args[:action] && args[:message]
      begin
        result.record code, logger.send(log_type, **args)
      rescue EventTracer::ErrorWithPayload => error
        EventTracer::Config.config.error_handler.call(error.cause || error, error.payload)
        result.record code, LogResult.new(false, error.message)
      rescue StandardError => error
        EventTracer::Config.config.error_handler.call(error, args)
        result.record code, LogResult.new(false, error.message)
      end
    else
      result.record code, LogResult.new(false, 'Fields action & message need to be populated')
    end
  end

  result
end