class Cabin::Outputs::StdlibLogger

Wrap Ruby stdlib's logger. This allows you to output to a normal ruby logger with Cabin. Since Ruby's Logger has a love for strings alone, this wrapper will convert the data/event to ruby inspect format before sending it to Logger.

Public Class Methods

new(logger) click to toggle source
# File lib/cabin/outputs/stdlib-logger.rb, line 9
def initialize(logger)
  @logger = logger
  @logger.level = logger.class::DEBUG
end

Public Instance Methods

<<(event) click to toggle source

Receive an event

# File lib/cabin/outputs/stdlib-logger.rb, line 16
def <<(event)
  if !event.include?(:level)
    event[:level] = :info
  end
  if event[:level].is_a?(Symbol)
    method = event[:level]
  else
    method = event[:level].downcase.to_sym || :info
  end
  event.delete(:level)

  data = event.clone
  # delete things from the 'data' portion that's not really data.
  data.delete(:message)
  data.delete(:timestamp)
  message = "#{event[:message]} #{data.inspect}"

  #p [@logger.level, logger.class::DEBUG]
  # This will call @logger.info(data) or something similar.
  @logger.send(method, message)
end