class TQ::Logger

Constants

DEFAULT_OPTIONS

Public Class Methods

new(queue, options={}) click to toggle source
# File lib/tq/logger.rb, line 13
def initialize(queue, options={})
  @queue = queue
  if Hash === options
    @log = build_log( DEFAULT_OPTIONS.merge(options) )
  else
    @log = options
  end
end

Public Instance Methods

add(severity, message=nil, progname=nil, context=nil, &block) click to toggle source
# File lib/tq/logger.rb, line 38
def add(severity, message=nil, progname=nil, context=nil, &block)
  t = Time.now
  severity, message, data, context = 
    normalize_params(severity, message, progname, context, &block)

  @log.add(severity, message, data[:progname])
  @queue.push!( 
    queue_message(t, severity, message, data, context), 
    ::Logger::SEV_LABEL[severity].to_s.downcase
  ) if (severity >= level)
end
Also aliased as: log
level() click to toggle source
# File lib/tq/logger.rb, line 22
def level
  @log.level
end
level=(severity) click to toggle source
# File lib/tq/logger.rb, line 26
def level=(severity)
  @log.level = severity
end
log(severity, message=nil, progname=nil, context=nil, &block)
Alias for: add
progname() click to toggle source
# File lib/tq/logger.rb, line 30
def progname
  @log.progname
end
progname=(name) click to toggle source
# File lib/tq/logger.rb, line 34
def progname=(name)
  @log.progname = name
end

Private Instance Methods

build_log(options) click to toggle source
# File lib/tq/logger.rb, line 60
def build_log(options)
  return options if options.respond_to?(:log)
  logger = ::Logger.new(options['file'], options['shift_age'], options['shift_size'])
  logger.level = options['level'] if options['level']
  logger.progname = options['progname']  if options['progname']
  return logger
end
normalize_params(severity, message, progname, context) { || ... } click to toggle source

damn, the ruby logger interface is weird… this logic is copied almost verbatim from ::Logger.add

# File lib/tq/logger.rb, line 70
def normalize_params(severity, message, progname, context, &block)
  severity ||= ::Logger::UNKNOWN
  progname ||= self.progname
  if message.nil?
    if block_given?
      message = yield
    else
      message = progname
      progname = self.progname
    end
  end

  # for case where progname is passed as hash
  data = {}
  if progname.respond_to?(:has_key?) && progname.respond_to?(:merge)
    data = {progname: self.progname}.merge(progname)
  else
    data = {progname: progname}
  end

  return [severity, message, data, context]
end
queue_message(t, severity, message, data={}, context={}) click to toggle source
# File lib/tq/logger.rb, line 93
def queue_message(t, severity, message, data={}, context={})
  return data.merge({
    time: t.iso8601,
    timestamp: t.to_i,
    level: severity,
    label: ::Logger::SEV_LABEL[severity],
    message: message,
    context: context
  })
end