Class: Cabin::Outputs::StdlibLogger

Inherits:
Object
  • Object
show all
Defined in:
lib/cabin/outputs/stdlib-logger.rb

Overview

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.

Instance Method Summary collapse

Constructor Details

#initialize(logger) ⇒ StdlibLogger

Returns a new instance of StdlibLogger.



9
10
11
12
# File 'lib/cabin/outputs/stdlib-logger.rb', line 9

def initialize(logger)
  @logger = logger
  @logger.level = logger.class::DEBUG
end

Instance Method Details

#<<(event) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 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