Class: EventTracer::BufferedLogger

Inherits:
Object
  • Object
show all
Defined in:
lib/event_tracer/buffered_logger.rb

Direct Known Subclasses

DynamoDB::Logger

Instance Method Summary collapse

Constructor Details

#initialize(log_processor:, worker:, buffer: Buffer.new(buffer_size: 0)) ⇒ BufferedLogger

Returns a new instance of BufferedLogger.



7
8
9
10
11
# File 'lib/event_tracer/buffered_logger.rb', line 7

def initialize(log_processor:, worker:, buffer: Buffer.new(buffer_size: 0))
  @buffer = buffer
  @worker = worker
  @log_processor = log_processor
end

Instance Method Details

#flushObject

Flushes all remaining payloads in the buffer immediately. Intended to be called during shutdown to avoid losing buffered messages.



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/event_tracer/buffered_logger.rb', line 21

def flush
  payloads = buffer.flush

  return LogResult.new(true) if payloads.nil? || payloads.empty?

  execute_payload(payloads)

  LogResult.new(true)
rescue EventTracer::ErrorWithPayload => e
  EventTracer.warn(
    loggers: %i[base],
    action: self.class.name,
    app: EventTracer::Config.config.app_name,
    error: e.class.name,
    message: e.message,
    payload: e.payload
  )

  LogResult.new(false, e)
end