Class: Appsignal::EventFormatter
- 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/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,
sig/appsignal.rbs
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 =
0- SQL_BODY_FORMAT =
1
Class Method Summary collapse
-
.register(name, formatter = nil) ⇒ void
Registers an event formatter for a specific event name.
-
.registered?(name, klass = nil) ⇒ Boolean
Checks if an event formatter is registered for a specific event name.
-
.unregister(name, formatter = self) ⇒ void
Unregisters an event formatter for a specific event name.
Class Method Details
.register(name, formatter = nil) ⇒ void
This method returns an undefined value.
Registers an event formatter for a specific event name.
@param name — The name of the event to register the formatter for.
@param formatter — The formatter class that implements the format(payload) method.
Register a custom formatter
class CustomFormatter < Appsignal::EventFormatter
def format(payload)
["Custom event", payload[:body]]
end
end
Appsignal::EventFormatter.register("my.event", CustomFormatter)
@see #unregister
@see #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.
@param name — The name of the event to check.
@param klass — The specific formatter class to check for. Optional.
@return — true if a formatter is registered, false otherwise.
@see #register
@see #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.
@param name — The name of the event to unregister the formatter for.
@param formatter — The formatter class to unregister. Defaults to self.
Unregister a custom formatter
Appsignal::EventFormatter.unregister("my.event", CustomFormatter)
@see #register
@see #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 |