class Pallets::Middleware::JobLogger

Public Class Methods

call(worker, job, context) { || ... } click to toggle source
# File lib/pallets/middleware/job_logger.rb, line 4
def self.call(worker, job, context)
  start_time = current_time

  Pallets.logger.with_metadata(extract_metadata(worker.id, job)) do
    begin
      Pallets.logger.info 'Started'
      result = yield
      Pallets.logger.info "Done in #{(current_time - start_time).round(3)}s"
      result
    rescue => ex
      Pallets.logger.warn "Failed after #{(current_time - start_time).round(3)}s"
      Pallets.logger.warn "#{ex.class.name}: #{ex.message}"
      Pallets.logger.warn ex.backtrace.join("\n") unless ex.backtrace.nil?
      raise
    end
  end
end
current_time() click to toggle source
# File lib/pallets/middleware/job_logger.rb, line 32
def self.current_time
  Process.clock_gettime(Process::CLOCK_MONOTONIC)
end
extract_metadata(wid, job) click to toggle source
# File lib/pallets/middleware/job_logger.rb, line 22
def self.extract_metadata(wid, job)
  {
    wid:  wid,
    wfid: job['wfid'],
    jid:  job['jid'],
    wf:   job['workflow_class'],
    tsk:  job['task_class'],
  }
end