Class: Honeybadger::NotificationSubscriber

Inherits:
Object
  • Object
show all
Includes:
InstrumentationHelper
Defined in:
lib/honeybadger/notification_subscriber.rb

Instance Method Summary collapse

Methods included from InstrumentationHelper

#decrement_counter, #extract_attributes, #extract_callable, #gauge, #histogram, #increment_counter, #metric_agent, #metric_attributes, #metric_instrumentation, #metric_source, #monotonic_timer, #time

Instance Method Details

#finish(name, id, payload) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/honeybadger/notification_subscriber.rb', line 12

def finish(name, id, payload)
  finish_time = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC)
  return unless process?(name, payload)

  payload = {
    instrumenter_id: id,
    duration: ((finish_time - payload.delete(:_start_time)) * 1000).round(2)
  }.merge(format_payload(name, payload).compact)

  record(name, payload)
  record_metrics(name, payload)
rescue => e
  # Instrumentation must never break the instrumented code.
  Honeybadger.config.logger.error("Error in Honeybadger instrumentation for #{name}: #{e.class}: #{e.message}")
end

#format_payload(name, payload) ⇒ Object



40
41
42
# File 'lib/honeybadger/notification_subscriber.rb', line 40

def format_payload(name, payload)
  payload
end

#process?(name, payload) ⇒ Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/honeybadger/notification_subscriber.rb', line 36

def process?(name, payload)
  true
end

#record(name, payload) ⇒ Object



28
29
30
# File 'lib/honeybadger/notification_subscriber.rb', line 28

def record(name, payload)
  Honeybadger.event(name, payload)
end

#record_metrics(name, payload) ⇒ Object



32
33
34
# File 'lib/honeybadger/notification_subscriber.rb', line 32

def record_metrics(name, payload)
  # noop
end

#start(name, id, payload) ⇒ Object



8
9
10
# File 'lib/honeybadger/notification_subscriber.rb', line 8

def start(name, id, payload)
  payload[:_start_time] = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC)
end