module Que::Utils::Logging
Attributes
internal_logger[RW]
log_formatter[W]
logger[RW]
Public Instance Methods
get_logger(internal: false)
click to toggle source
# File lib/que/utils/logging.rb, line 57 def get_logger(internal: false) if l = internal ? internal_logger : logger l.respond_to?(:call) ? l.call : l end end
internal_log(event, object = nil) { || ... }
click to toggle source
Logging
method used specifically to instrument Que’s internals. There’s usually not an internal logger set up, so this method is generally a no- op unless the specs are running or someone turns on internal logging so we can debug an issue.
# File lib/que/utils/logging.rb, line 35 def internal_log(event, object = nil) if l = get_logger(internal: true) data = _default_log_data data[:internal_event] = Que.assert(Symbol, event) data[:object_id] = object.object_id if object data[:t] = Time.now.utc.iso8601(6) additional = Que.assert(Hash, yield) # Make sure that none of our log contents accidentally overwrite our # default data contents. expected_length = data.length + additional.length data.merge!(additional) Que.assert(expected_length == data.length) do "Bad internal logging keys in: #{additional.keys.inspect}" end l.info(JSON.dump(data)) end end
log(event:, level: :info, **extra)
click to toggle source
# File lib/que/utils/logging.rb, line 11 def log(event:, level: :info, **extra) data = _default_log_data data[:event] = Que.assert(Symbol, event) data.merge!(extra) if l = get_logger begin if output = log_formatter.call(data) l.send level, output end rescue => e msg = "Error raised from Que.log_formatter proc:" + " #{e.class}: #{e.message}\n#{e.backtrace}" l.error(msg) end end end
log_formatter()
click to toggle source
# File lib/que/utils/logging.rb, line 63 def log_formatter @log_formatter ||= JSON.method(:dump) end
Private Instance Methods
_default_log_data()
click to toggle source
# File lib/que/utils/logging.rb, line 69 def _default_log_data { lib: :que, hostname: CURRENT_HOSTNAME, pid: Process.pid, thread: Thread.current.object_id, } end