Class: Appsignal::EventFormatter

Inherits:
Object
  • Object
show all
Defined in:
lib/appsignal/event_formatter.rb,
lib/appsignal/event_formatter/rom/sql_formatter.rb,
lib/appsignal/event_formatter/sequel/sql_formatter.rb,
lib/appsignal/event_formatter/faraday/request_formatter.rb,
lib/appsignal/event_formatter/active_record/sql_formatter.rb,
lib/appsignal/event_formatter/action_view/render_formatter.rb,
lib/appsignal/event_formatter/elastic_search/search_formatter.rb,
lib/appsignal/event_formatter/view_component/render_formatter.rb,
lib/appsignal/event_formatter/mongo_ruby_driver/query_formatter.rb,
lib/appsignal/event_formatter/active_record/instantiation_formatter.rb

Overview

Keeps track of formatters for types event that we can use to get the title and body of an event. Formatters should inherit from this class and implement a format(payload) method which returns an array with the title and body.

When implementing a formatter remember that it cannot keep separate state per event, the same object will be called intermittently in a threaded environment. So only keep global configuration as state and pass the payload around as an argument if you need to use helper methods.

Constant Summary collapse

DEFAULT =

Returns:

  • (Integer)
0
SQL_BODY_FORMAT =

Returns:

  • (Integer)
1

Class Method Summary collapse

Class Method Details

.register(name, formatter = nil) ⇒ void

This method returns an undefined value.

Registers an event formatter for a specific event name.

Examples:

Register a custom formatter

class CustomFormatter < Appsignal::EventFormatter
  def format(payload)
    ["Custom event", payload[:body]]
  end
end

Appsignal::EventFormatter.register("my.event", CustomFormatter)

Parameters:

  • name (String, Symbol)

    The name of the event to register the formatter for.

  • formatter (Class) (defaults to: nil)

    The formatter class that implements the ‘format(payload)` method.

See Also:

  • #unregister
  • #registered?


42
43
44
45
46
47
48
49
50
51
52
# File 'lib/appsignal/event_formatter.rb', line 42

def register(name, formatter = nil)
  if registered?(name, formatter)
    logger.warn(
      "Formatter for '#{name}' already registered, not registering " \
        "'#{formatter.name}'"
    )
    return
  end

  initialize_formatter name, formatter
end

.registered?(name, klass = nil) ⇒ Boolean

Checks if an event formatter is registered for a specific event name.

Parameters:

  • name (String, Symbol)

    The name of the event to check.

  • klass (Class, nil) (defaults to: nil)

    The specific formatter class to check for. Optional.

Returns:

  • (Boolean)

    true if a formatter is registered, false otherwise.

See Also:

  • #register
  • #unregister


80
81
82
83
84
85
86
# File 'lib/appsignal/event_formatter.rb', line 80

def registered?(name, klass = nil)
  if klass
    formatter_classes[name] == klass
  else
    formatter_classes.include?(name)
  end
end

.unregister(name, formatter = self) ⇒ void

This method returns an undefined value.

Unregisters an event formatter for a specific event name.

Examples:

Unregister a custom formatter

Appsignal::EventFormatter.unregister("my.event", CustomFormatter)

Parameters:

  • name (String, Symbol)

    The name of the event to unregister the formatter for.

  • formatter (Class) (defaults to: self)

    The formatter class to unregister. Defaults to ‘self`.

See Also:

  • #register
  • #registered?


65
66
67
68
69
70
# File 'lib/appsignal/event_formatter.rb', line 65

def unregister(name, formatter = self)
  return unless formatter_classes[name] == formatter

  formatter_classes.delete(name)
  formatters.delete(name)
end