Class: Lapsoss::Adapters::LoggerAdapter

Inherits:
Base
  • Object
show all
Defined in:
lib/lapsoss/adapters/logger_adapter.rb

Constant Summary

Constants inherited from Base

Base::JSON_CONTENT_TYPE, Base::USER_AGENT

Instance Attribute Summary

Attributes inherited from Base

#name, #settings

Instance Method Summary collapse

Methods inherited from Base

#disable!, #enable!, #enabled?, #flush, #shutdown, #supports?

Methods included from Validators

logger, validate_api_key!, validate_callable!, validate_dsn!, validate_environment!, validate_presence!, validate_retries!, validate_sample_rate!, validate_timeout!, validate_url!

Constructor Details

#initialize(name, settings = {}) ⇒ LoggerAdapter

Returns a new instance of LoggerAdapter.



8
9
10
11
# File 'lib/lapsoss/adapters/logger_adapter.rb', line 8

def initialize(name, settings = {})
  @logger = settings[:logger] || Logger.new($stdout)
  super
end

Instance Method Details

#capabilitiesObject



13
14
15
16
17
# File 'lib/lapsoss/adapters/logger_adapter.rb', line 13

def capabilities
  super.merge(
    breadcrumbs: true
  )
end

#capture(event) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/lapsoss/adapters/logger_adapter.rb', line 19

def capture(event)
  case event.type
  when :exception
    @logger.error(format_exception(event.exception, event.context))
  when :message
    logger_level = map_level(event.level)
    @logger.send(logger_level, format_message(event.message, event.context))
  else
    @logger.info("[LAPSOSS] Unhandled event type: #{event.type.inspect} | Event: #{event.to_h.inspect}")
  end

  # Log breadcrumbs if present in the event context
  return unless event.context[:breadcrumbs]&.any?

  event.context[:breadcrumbs].each do |breadcrumb|
    breadcrumb_msg = "[BREADCRUMB] [#{breadcrumb[:type].upcase}] #{breadcrumb[:message]}"
    breadcrumb_msg += " | #{breadcrumb[:metadata].inspect}" unless breadcrumb[:metadata].empty?
    @logger.debug(breadcrumb_msg)
  end
end