class Loga::Sidekiq6::JobLogger

Constants

EVENT_TYPE

Public Instance Methods

call(item, _queue) { || ... } click to toggle source
# File lib/loga/sidekiq6/job_logger.rb, line 8
def call(item, _queue)
  start = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC)

  yield

  with_elapsed_time_context(start) do
    loga_log(
      message: "#{item['class']} with jid: '#{item['jid']}' done", item: item,
    )
  end
rescue Exception => e # rubocop:disable Lint/RescueException
  with_elapsed_time_context(start) do
    loga_log(
      message: "#{item['class']} with jid: '#{item['jid']}' fail", item: item,
      exception: e
    )
  end

  raise
end

Private Instance Methods

loga_log(message:, item:, exception: nil) click to toggle source
# File lib/loga/sidekiq6/job_logger.rb, line 31
def loga_log(message:, item:, exception: nil)
  data = {
    'created_at'  => item['created_at'],
    'enqueued_at' => item['enqueued_at'],
    'jid'         => item['jid'],
    'queue'       => item['queue'],
    'retry'       => item['retry'],
    'params'      => item['args'],
    'class'       => item['class'],
  }
  if exception
    data['exception'] = exception
    @logger.warn(Event.new(type: EVENT_TYPE, message: message, data: data))
  else
    @logger.info(Event.new(type: EVENT_TYPE, message: message, data: data))
  end
end