class LogrageActivejob::LogSubscriber

Public Instance Methods

perform(event) click to toggle source
# File lib/lograge_activejob/log_subscriber.rb, line 5
def perform(event)
  data = initial_data(event)
  data.merge!(custom_options(event))
  formatted_message = Lograge.formatter.call(data)
  logger.send(Lograge.log_level, formatted_message)
end

Private Instance Methods

custom_options(event) click to toggle source
# File lib/lograge_activejob/log_subscriber.rb, line 35
def custom_options(event)
  LogrageActivejob.custom_options(event) || {}
end
initial_data(event) click to toggle source
# File lib/lograge_activejob/log_subscriber.rb, line 17
def initial_data(event)
  payload = event.payload
  job = payload[:job]
  ex = payload[:exception_object]

  {
    event_name: event.name,
    job_class: job.class.name,
    job_id: job.job_id,
    adapter_class: event.payload[:adapter].class.name.demodulize,
    queue_name: job.queue_name,
    args: job.arguments.any? ? ActiveJob::Arguments.serialize(job.arguments) : [],
    duration: event.duration.round(2), # ms
    error: ex&.message,
    backtrace: ex&.backtrace,
  }.compact
end
logger() click to toggle source
Calls superclass method
# File lib/lograge_activejob/log_subscriber.rb, line 13
def logger
  LogrageActivejob.logger.presence || Lograge.logger.presence || super
end
scheduled_at(job) click to toggle source
# File lib/lograge_activejob/log_subscriber.rb, line 39
def scheduled_at(job)
  Time.at(job.scheduled_at).utc if job.scheduled_at
end