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