module WebsocketRails::Logging

Constants

ANSI
LOGGABLE_DATA

Logging module heavily influenced by Travis-Support library

Public Class Methods

configure(logger) click to toggle source
# File lib/websocket_rails/logging.rb, line 24
def configure(logger)
  logger.tap do
    logger.formatter = proc { |*args| Format.format(*args) }
    logger.level = Logger.const_get(log_level.to_s.upcase)
  end
end
log_level() click to toggle source
# File lib/websocket_rails/logging.rb, line 31
def log_level
  WebsocketRails.config.log_level || :debug
end

Public Instance Methods

color_for_level(level) click to toggle source
# File lib/websocket_rails/logging.rb, line 107
def color_for_level(level)
  case level
  when :info then :green
  when :debug then :yellow
  else
    :red
  end
end
colorize(color, text) click to toggle source
# File lib/websocket_rails/logging.rb, line 103
def colorize(color, text)
  "\e[#{ANSI[color]}m#{text}\e[0m"
end
log(level, message, options = {}) click to toggle source
# File lib/websocket_rails/logging.rb, line 45
def log(level, message, options = {})
  message.chomp.split("\n").each do |line|
    logger.send(level, wrap(level, self, line, options || {}))
  end
end
log_data?(event) click to toggle source
# File lib/websocket_rails/logging.rb, line 82
def log_data?(event)
  LOGGABLE_DATA.include?(event.data.class)
end
log_event(event, &block) click to toggle source
# File lib/websocket_rails/logging.rb, line 63
def log_event(event, &block)
  log_event_start(event) if log_event?(event)
  start_time = Time.now
  block.call
  total_time = Time.now - start_time
  log_event_end(event, total_time) if log_event?(event)
rescue Exception => ex
  log_exception(ex)
  raise
end
log_event?(event) click to toggle source
# File lib/websocket_rails/logging.rb, line 74
def log_event?(event)
  if event.is_internal?
    WebsocketRails.config.log_internal_events?
  else
    true
  end
end
log_event_end(event, time) click to toggle source
# File lib/websocket_rails/logging.rb, line 59
def log_event_end(event, time)
  info "Event #{event.encoded_name} Finished in #{time.to_f.to_d.to_s} seconds\n\n"
end
log_event_start(event) click to toggle source
# File lib/websocket_rails/logging.rb, line 51
def log_event_start(event)
  message = "Started Event: #{event.encoded_name}\n"
  message << "#{colorize(:cyan, "Name:")} #{event.encoded_name}\n"
  message << "#{colorize(:cyan, "Data:")} #{event.data.inspect}\n" if log_data?(event)
  message << "#{colorize(:cyan, "Connection:")} #{event.connection}\n\n"
  info message
end
log_exception(exception) click to toggle source
# File lib/websocket_rails/logging.rb, line 86
def log_exception(exception)
  logger.error(wrap(:error, self, "#{exception.class.name}: #{exception.message}"))
  exception.backtrace.each { |line| logger.error(wrap(:error, self, line)) } if exception.backtrace
  logger << "\n"
rescue Exception => ex
  puts '--- FATAL ---'
  puts 'an exception occured while logging an exception'
  puts ex.message, ex.backtrace
  puts exception.message, exception.backtrace
end
log_header() click to toggle source
# File lib/websocket_rails/logging.rb, line 116
def log_header
  self.class.name.split('::').last
end
wrap(level, object, message, options = {}) click to toggle source
# File lib/websocket_rails/logging.rb, line 97
def wrap(level, object, message, options = {})
  header = options[:header] || object.log_header
  color = color_for_level(level)
  "[#{colorize(color, header)}] #{message.chomp}"
end