class RailsSemanticLogger::ActiveJob::LogSubscriber::EventFormatter

Attributes

event[R]

Public Class Methods

new(event:, log_duration: false) click to toggle source
# File lib/rails_semantic_logger/active_job/log_subscriber.rb, line 73
def initialize(event:, log_duration: false)
  @event = event
  @log_duration = log_duration
end

Public Instance Methods

job_info() click to toggle source
# File lib/rails_semantic_logger/active_job/log_subscriber.rb, line 78
def job_info
  "#{job.class.name} (Job ID: #{job.job_id}) to #{queue_name}"
end
payload() click to toggle source
# File lib/rails_semantic_logger/active_job/log_subscriber.rb, line 82
def payload
  {}.tap do |h|
    h[:event_name]      = event.name
    h[:adapter]         = adapter_name
    h[:queue]           = job.queue_name
    h[:job_class]       = job.class.name
    h[:job_id]          = job.job_id
    h[:provider_job_id] = job.try(:provider_job_id) # Not available in Rails 4.2
    h[:duration]        = event.duration.round(2) if log_duration?
    h[:arguments]       = formatted_args
  end
end
queue_name() click to toggle source
# File lib/rails_semantic_logger/active_job/log_subscriber.rb, line 95
def queue_name
  adapter_name + "(#{job.queue_name})"
end
scheduled_at() click to toggle source
# File lib/rails_semantic_logger/active_job/log_subscriber.rb, line 99
def scheduled_at
  Time.at(event.payload[:job].scheduled_at).utc
end

Private Instance Methods

adapter_name() click to toggle source
# File lib/rails_semantic_logger/active_job/log_subscriber.rb, line 111
def adapter_name
  event.payload[:adapter].class.name.demodulize.remove("Adapter")
end
format(arg) click to toggle source
# File lib/rails_semantic_logger/active_job/log_subscriber.rb, line 123
def format(arg)
  case arg
  when Hash
    arg.transform_values { |value| format(value) }
  when Array
    arg.map { |value| format(value) }
  when GlobalID::Identification
    begin
      arg.to_global_id
    rescue StandardError
      arg
    end
  else
    arg
  end
end
formatted_args() click to toggle source
# File lib/rails_semantic_logger/active_job/log_subscriber.rb, line 115
def formatted_args
  if defined?(job.class.log_arguments?) && !job.class.log_arguments?
    ""
  else
    JSON.pretty_generate(job.arguments.map { |arg| format(arg) })
  end
end
job() click to toggle source
# File lib/rails_semantic_logger/active_job/log_subscriber.rb, line 107
def job
  event.payload[:job]
end
log_duration?() click to toggle source
# File lib/rails_semantic_logger/active_job/log_subscriber.rb, line 140
def log_duration?
  @log_duration
end