Class: ActiveJob::LogSubscriber
- Inherits:
-
ActiveSupport::LogSubscriber
- Object
- ActiveSupport::LogSubscriber
- ActiveJob::LogSubscriber
- Defined in:
- lib/active_job/log_subscriber.rb
Overview
:nodoc:
Instance Method Summary collapse
- #discard(event) ⇒ Object
- #enqueue(event) ⇒ Object
- #enqueue_all(event) ⇒ Object
- #enqueue_at(event) ⇒ Object
- #enqueue_retry(event) ⇒ Object
- #interrupt(event) ⇒ Object
- #perform(event) ⇒ Object
- #perform_start(event) ⇒ Object
- #resume(event) ⇒ Object
- #retry_stopped(event) ⇒ Object
- #step(event) ⇒ Object
- #step_skipped(event) ⇒ Object
- #step_started(event) ⇒ Object
Instance Method Details
#discard(event) ⇒ Object
131 132 133 134 135 136 137 138 |
# File 'lib/active_job/log_subscriber.rb', line 131 def discard(event) job = event.payload[:job] ex = event.payload[:error] error do "Discarded #{job.class} (Job ID: #{job.job_id}) due to a #{ex.class} (#{ex.})." end end |
#enqueue(event) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/active_job/log_subscriber.rb', line 9 def enqueue(event) job = event.payload[:job] ex = event.payload[:exception_object] || job.enqueue_error if ex error do "Failed enqueuing #{job.class.name} to #{queue_name(event)}: #{ex.class} (#{ex.})" end elsif event.payload[:aborted] info do "Failed enqueuing #{job.class.name} to #{queue_name(event)}, a before_enqueue callback halted the enqueuing execution." end else info do "Enqueued #{job.class.name} (Job ID: #{job.job_id}) to #{queue_name(event)}" + args_info(job) end end end |
#enqueue_all(event) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/active_job/log_subscriber.rb', line 49 def enqueue_all(event) info do jobs = event.payload[:jobs] adapter = event.payload[:adapter] enqueued_count = event.payload[:enqueued_count].to_i if enqueued_count == jobs.size (adapter, jobs) elsif jobs.any?(&:successfully_enqueued?) enqueued_jobs = jobs.select(&:successfully_enqueued?) failed_enqueue_count = jobs.size - enqueued_count if failed_enqueue_count == 0 (adapter, enqueued_jobs) else "#{(adapter, enqueued_jobs)}. "\ "Failed enqueuing #{failed_enqueue_count} #{'job'.pluralize(failed_enqueue_count)}" end else failed_enqueue_count = jobs.size - enqueued_count "Failed enqueuing #{failed_enqueue_count} #{'job'.pluralize(failed_enqueue_count)} "\ "to #{ActiveJob.adapter_name(adapter)}" end end end |
#enqueue_at(event) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/active_job/log_subscriber.rb', line 29 def enqueue_at(event) job = event.payload[:job] ex = event.payload[:exception_object] || job.enqueue_error if ex error do "Failed enqueuing #{job.class.name} to #{queue_name(event)}: #{ex.class} (#{ex.})" end elsif event.payload[:aborted] info do "Failed enqueuing #{job.class.name} to #{queue_name(event)}, a before_enqueue callback halted the enqueuing execution." end else info do "Enqueued #{job.class.name} (Job ID: #{job.job_id}) to #{queue_name(event)} at #{scheduled_at(event)}" + args_info(job) end end end |
#enqueue_retry(event) ⇒ Object
106 107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/active_job/log_subscriber.rb', line 106 def enqueue_retry(event) job = event.payload[:job] ex = event.payload[:error] wait = event.payload[:wait] info do if ex "Retrying #{job.class} (Job ID: #{job.job_id}) after #{job.executions} attempts in #{wait.to_i} seconds, due to a #{ex.class} (#{ex.})." else "Retrying #{job.class} (Job ID: #{job.job_id}) after #{job.executions} attempts in #{wait.to_i} seconds." end end end |
#interrupt(event) ⇒ Object
141 142 143 144 145 146 |
# File 'lib/active_job/log_subscriber.rb', line 141 def interrupt(event) job = event.payload[:job] info do "Interrupted #{job.class} (Job ID: #{job.job_id}) #{event.payload[:description]} (#{event.payload[:reason]})" end end |
#perform(event) ⇒ Object
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/active_job/log_subscriber.rb', line 86 def perform(event) job = event.payload[:job] ex = event.payload[:exception_object] if ex cleaned_backtrace = backtrace_cleaner.clean(ex.backtrace) error do "Error performing #{job.class.name} (Job ID: #{job.job_id}) from #{queue_name(event)} in #{event.duration.round(2)}ms: #{ex.class} (#{ex.}):\n" + Array(cleaned_backtrace).join("\n") end elsif event.payload[:aborted] error do "Error performing #{job.class.name} (Job ID: #{job.job_id}) from #{queue_name(event)} in #{event.duration.round(2)}ms: a before_perform callback halted the job execution" end else info do "Performed #{job.class.name} (Job ID: #{job.job_id}) from #{queue_name(event)} in #{event.duration.round(2)}ms" end end end |
#perform_start(event) ⇒ Object
76 77 78 79 80 81 82 83 |
# File 'lib/active_job/log_subscriber.rb', line 76 def perform_start(event) info do job = event.payload[:job] enqueue_info = job.enqueued_at.present? ? " enqueued at #{job.enqueued_at.utc.iso8601(9)}" : "" "Performing #{job.class.name} (Job ID: #{job.job_id}) from #{queue_name(event)}" + enqueue_info + args_info(job) end end |
#resume(event) ⇒ Object
149 150 151 152 153 154 |
# File 'lib/active_job/log_subscriber.rb', line 149 def resume(event) job = event.payload[:job] info do "Resuming #{job.class} (Job ID: #{job.job_id}) #{event.payload[:description]}" end end |
#retry_stopped(event) ⇒ Object
121 122 123 124 125 126 127 128 |
# File 'lib/active_job/log_subscriber.rb', line 121 def retry_stopped(event) job = event.payload[:job] ex = event.payload[:error] error do "Stopped retrying #{job.class} (Job ID: #{job.job_id}) due to a #{ex.class} (#{ex.}), which reoccurred on #{job.executions} attempts." end end |
#step(event) ⇒ Object
178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 |
# File 'lib/active_job/log_subscriber.rb', line 178 def step(event) job = event.payload[:job] step = event.payload[:step] ex = event.payload[:exception_object] if event.payload[:interrupted] info do "Step '#{step.name}' interrupted at cursor '#{step.cursor}' for #{job.class} (Job ID: #{job.job_id}) in #{event.duration.round(2)}ms" end elsif ex error do "Error during step '#{step.name}' at cursor '#{step.cursor}' for #{job.class} (Job ID: #{job.job_id}) in #{event.duration.round(2)}ms: #{ex.class} (#{ex.})" end else info do "Step '#{step.name}' completed for #{job.class} (Job ID: #{job.job_id}) in #{event.duration.round(2)}ms" end end end |
#step_skipped(event) ⇒ Object
157 158 159 160 161 162 |
# File 'lib/active_job/log_subscriber.rb', line 157 def step_skipped(event) job = event.payload[:job] info do "Step '#{event.payload[:step].name}' skipped #{job.class}" end end |
#step_started(event) ⇒ Object
165 166 167 168 169 170 171 172 173 174 175 |
# File 'lib/active_job/log_subscriber.rb', line 165 def step_started(event) job = event.payload[:job] step = event.payload[:step] info do if step.resumed? "Step '#{step.name}' resumed from cursor '#{step.cursor}' for #{job.class} (Job ID: #{job.job_id})" else "Step '#{step.name}' started for #{job.class} (Job ID: #{job.job_id})" end end end |