Class: JsonLogging::EventSubscriber

Inherits:
Object
  • Object
show all
Defined in:
lib/json_logging/event_subscriber.rb,
sig/json_logging.rbs

Overview

Opt-in subscriber for ActiveSupport::EventReporter (Rails 8.1+). Preserves the Rails event hash shape as a single JSON line.

Instance Method Summary collapse

Constructor Details

#initialize(logger: nil, io: nil) ⇒ EventSubscriber

Returns a new instance of EventSubscriber.

Parameters:

  • logger: (Object) (defaults to: nil)
  • io: (Object) (defaults to: nil)


5
6
7
8
9
10
11
12
13
14
15
# File 'lib/json_logging/event_subscriber.rb', line 5

def initialize(logger: nil, io: nil)
  if !logger.nil? && !io.nil?
    raise ArgumentError, "JsonLogging::EventSubscriber accepts only one of logger: or io:"
  end
  if logger.nil? && io.nil?
    raise ArgumentError, "JsonLogging::EventSubscriber requires logger: or io:"
  end

  @logger = logger
  @io = io
end

Instance Method Details

#emit(event) ⇒ void

This method returns an undefined value.

Parameters:

  • event (Object)


17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/json_logging/event_subscriber.rb', line 17

def emit(event)
  line = begin
    encode_event(event)
  rescue => error
    encode_fallback(event, error)
  end

  write_line(line)
rescue => error
  report_write_error(error)
  nil
end