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
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