class Loggery::Metadata::Middleware::Sidekiq
Attributes
error_handler[RW]
Public Instance Methods
call(_worker, message, queue) { || ... }
click to toggle source
# File lib/loggery/metadata/middleware/sidekiq.rb, line 16 def call(_worker, message, queue) Loggery::Metadata::Store.with_metadata(build_metadata(message, queue)) do job_instance_name = "#{message['class']} (#{message['args']})" log_job_start(message, job_instance_name) log_job_runtime(:sidekiq_job, job_instance_name) do yield rescue StandardError => e # Log exceptions here, otherwise they won't have the metadata available anymore by # the time they reach the Sidekiq default error handler. self.class.error_handler&.call(e) raise e end end end
Private Instance Methods
build_metadata(message, queue)
click to toggle source
# File lib/loggery/metadata/middleware/sidekiq.rb, line 34 def build_metadata(message, queue) { jid: message["jid"], thread_id: Thread.current.object_id.to_s(36), worker: message["class"], args: message["args"].inspect, queue: queue, retry_count: message["retry_count"], worker_type: "sidekiq" } end
log_job_start(message, job_instance_name)
click to toggle source
# File lib/loggery/metadata/middleware/sidekiq.rb, line 46 def log_job_start(message, job_instance_name) execution_delay = (Time.current - Time.zone.at(message["enqueued_at"]) if message["enqueued_at"]) Rails.logger.info( event_type: :sidekiq_job_started, message: "Job type sidekiq_job - #{job_instance_name} started", execution_delay: execution_delay ) end