class ActiveJob::Logging::LogSubscriber
:nodoc:
def args_info(job)
def args_info(job) if job.arguments.any? " with arguments: " + job.arguments.map { |arg| format(arg).inspect }.join(", ") else "" end end
def enqueue(event)
def enqueue(event) info do job = event.payload[:job] "Enqueued #{job.class.name} (Job ID: #{job.job_id}) to #{queue_name(event)}" + args_info(job) end end
def enqueue_at(event)
def enqueue_at(event) info do job = event.payload[:job] "Enqueued #{job.class.name} (Job ID: #{job.job_id}) to #{queue_name(event)} at #{scheduled_at(event)}" + args_info(job) end end
def format(arg)
def format(arg) case arg when Hash arg.transform_values { |value| format(value) } when Array arg.map { |value| format(value) } when GlobalID::Identification arg.to_global_id rescue arg else arg end end
def logger
def logger ActiveJob::Base.logger end
def perform(event)
def perform(event) job = event.payload[:job] ex = event.payload[:exception_object] if ex error do "Error performing #{job.class.name} (Job ID: #{job.job_id}) from #{queue_name(event)} in #{event.duration.round(2)}ms: #{ex.class} (#{ex.message}):\n" + Array(ex.backtrace).join("\n") end else info do "Performed #{job.class.name} (Job ID: #{job.job_id}) from #{queue_name(event)} in #{event.duration.round(2)}ms" end end end
def perform_start(event)
def perform_start(event) info do job = event.payload[:job] "Performing #{job.class.name} (Job ID: #{job.job_id}) from #{queue_name(event)}" + args_info(job) end end
def queue_name(event)
def queue_name(event) event.payload[:adapter].class.name.demodulize.remove("Adapter") + "(#{event.payload[:job].queue_name})" end
def scheduled_at(event)
def scheduled_at(event) Time.at(event.payload[:job].scheduled_at).utc end