class Loga::Sidekiq5::JobLogger

The approach of using a custom job logger in sidekiq was introduced in v5.0: github.com/mperham/sidekiq/pull/3235

Constants

EVENT_TYPE

Public Instance Methods

call(item, _queue) { || ... } click to toggle source
# File lib/loga/sidekiq5/job_logger.rb, line 18
def call(item, _queue)
  reset_data
  yield
rescue Exception => ex # rubocop:disable Lint/RescueException
  data['exception'] = ex

  raise
ensure
  assign_data(item)
  send_message
end
data() click to toggle source
# File lib/loga/sidekiq5/job_logger.rb, line 14
def data
  @data ||= {}
end
started_at() click to toggle source
# File lib/loga/sidekiq5/job_logger.rb, line 10
def started_at
  @started_at ||= Time.now
end

Private Instance Methods

assign_data(item) click to toggle source
# File lib/loga/sidekiq5/job_logger.rb, line 37
def assign_data(item)
  data['created_at']  = item['created_at']
  data['enqueued_at'] = item['enqueued_at']
  data['jid']         = item['jid']
  data['queue']       = item['queue']
  data['retry']       = item['retry']
  data['params']      = item['args']
  data['class']       = item['class']
  data['duration']    = duration_in_ms(started_at)
end
compute_level() click to toggle source
# File lib/loga/sidekiq5/job_logger.rb, line 58
def compute_level
  data.key?('exception') ? :warn : :info
end
logger() click to toggle source
# File lib/loga/sidekiq5/job_logger.rb, line 62
def logger
  Loga.logger
end
reset_data() click to toggle source
# File lib/loga/sidekiq5/job_logger.rb, line 32
def reset_data
  @data = {}
  @started_at = Time.now
end
send_message() click to toggle source
# File lib/loga/sidekiq5/job_logger.rb, line 52
def send_message
  event = Event.new(data: data, message: short_message, type: EVENT_TYPE)

  logger.public_send(compute_level, event)
end
short_message() click to toggle source
# File lib/loga/sidekiq5/job_logger.rb, line 48
def short_message
  "#{data['class']} with jid: '#{data['jid']}' executed in #{data['duration']}ms"
end