class TTY::Logger::Handlers::Raven

Attributes

config[R]
level[R]

Public Class Methods

new( output: $stderr, formatter: nil, config: nil, level: nil, styles: {} ) click to toggle source
# File lib/tty/logger/handlers/raven.rb, line 13
def initialize(
  output: $stderr, formatter: nil, config: nil, level: nil, styles: {}
)
  @config = config
  @level = level || @config.level
  @mutex = Mutex.new
end

Public Instance Methods

call(event) click to toggle source

@api public

# File lib/tty/logger/handlers/raven.rb, line 22
def call(event)
  @mutex.lock

  data = {}

  event.metadata.each do |meta|
    case meta
    when :file
      data[:path] = format_filepath(event)
    end
  end

  unless event.backtrace.empty?
    data[:type] = event.message.first&.class&.name
    data[:value] = event.message.first&.message
  end

  data.merge!(event.fields) unless event.fields.empty?

  ::Raven.breadcrumbs.record do |crumb|
    crumb.level = event.metadata[:level].to_s
    crumb.category = 'logger'
    crumb.message = event.message.join(' ')
    crumb.timestamp = event.metadata[:time].to_i
    crumb.type = event.backtrace.empty? ? 'default' : 'error'
    crumb.data = data
  end
ensure
  @mutex.unlock
end