Class: Seams::Observability::Adapters::RailsLogger

Inherits:
Seams::Observability::Adapter show all
Defined in:
lib/seams/observability/adapters/rails_logger.rb

Overview

Default observability adapter — wraps Rails.logger (or a stdout Logger when Rails isn’t booted) and emits messages tagged with the seams namespace plus structured key=value context.

Instance Method Summary collapse

Methods inherited from Seams::Observability::Adapter

#debug, #error, #info, #warn

Constructor Details

#initialize(logger: nil) ⇒ RailsLogger

Returns a new instance of RailsLogger.



13
14
15
16
# File 'lib/seams/observability/adapters/rails_logger.rb', line 13

def initialize(logger: nil)
  super()
  @logger = logger || default_logger
end

Instance Method Details

#measure(operation, **context) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
# File 'lib/seams/observability/adapters/rails_logger.rb', line 24

def measure(operation, **context)
  start  = monotonic_ms
  result = yield
  duration = (monotonic_ms - start).round(2)
  info(operation, **context, duration_ms: duration)
  result
rescue StandardError => e
  duration = (monotonic_ms - start).round(2)
  error(operation, **context, duration_ms: duration, error: "#{e.class}: #{e.message}")
  raise
end