Class: EventLoggerRails::Emitter

Inherits:
Object
  • Object
show all
Defined in:
lib/event_logger_rails/emitter.rb

Overview

Processes events, sending data to logger.

Instance Method Summary collapse

Constructor Details

#initializeEmitter

Initializes the emitter. It references the configured log device for log output. It references the configured logger class for logging, falling back to EventLogger.



9
10
11
12
# File 'lib/event_logger_rails/emitter.rb', line 9

def initialize
  logdev = EventLoggerRails.logdev
  @logger = EventLoggerRails.logger_class.constantize.new(logdev) || EventLoggerRails::EventLogger.new(logdev)
end

Instance Method Details

#log(event, level:, data: {}) ⇒ Integer

Note:

Prefer to use the public API provided by ‘EventLoggerRails.log()`.

Validates and logs an event with the given level and data. If an error is raised, it recursively calls itself with the error’s event.

Examples:

emitter = EventLoggerRails::Emitter.new
emitter.log('foo.bar.baz', level: :info, data: { foo: 'bar' })

Parameters:

  • event (EventLoggerRails::Event, String)

    The event to log. Can be a string or an Event object.

  • level (Symbol)

    The level of the event.

  • data (Hash) (defaults to: {})

    Additional data to log.

Returns:

  • (Integer)

    The number of bytes written to the log.



25
26
27
28
29
30
31
32
33
# File 'lib/event_logger_rails/emitter.rb', line 25

def log(event, level:, data: {})
  Event.new(event).validate! do |validated_event|
    message = Message.new(event: validated_event, data:)
    level = level || validated_event.level || EventLoggerRails.default_level
    log_message(message, level.to_sym)
  end
rescue Exceptions::UnregisteredEvent, Exceptions::InvalidLoggerLevel => error
  log(error.event, level: :error, data: { message: error.message })
end