Skip to content

Commit ea9d8d6

Browse files
committed
Extend #enqueue in ActvieJobSubscriber to handle errors and aborts
1 parent 59f8d15 commit ea9d8d6

File tree

2 files changed

+22
-5
lines changed

2 files changed

+22
-5
lines changed

lib/rails_semantic_logger/active_job/log_subscriber.rb

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,23 @@ module RailsSemanticLogger
44
module ActiveJob
55
class LogSubscriber < ::ActiveSupport::LogSubscriber
66
def enqueue(event)
7-
log_with_formatter event: event do |fmt|
8-
{message: "Enqueued #{fmt.job_info}"}
7+
ex = event.payload[:exception_object]
8+
9+
if ex
10+
log_with_formatter level: :error, event: event do |fmt|
11+
{
12+
message: "Failed enqueuing #{fmt.job_info} (#{ex.class} (#{ex.message})",
13+
exception: ex
14+
}
15+
end
16+
elsif event.payload[:aborted]
17+
log_with_formatter level: :info, event: event do |fmt|
18+
{ message: "Failed enqueuing #{fmt.job_info}, a before_enqueue callback halted the enqueuing execution." }
19+
end
20+
else
21+
log_with_formatter event: event do |fmt|
22+
{ message: "Enqueued #{fmt.job_info}" }
23+
end
924
end
1025
end
1126

test/active_job_test.rb

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
require_relative "test_helper"
2+
require 'pry'
23

34
class ActiveJobTest < Minitest::Test
45
if defined?(ActiveJob)
@@ -142,7 +143,7 @@ def id
142143
messages[0],
143144
level: :error,
144145
name: "Rails",
145-
message_includes: "Error enqueuing ActiveJobTest::MyJob",
146+
message_includes: "Failed enqueuing ActiveJobTest::MyJob",
146147
payload_includes: {
147148
job_class: "ActiveJobTest::MyJob",
148149
queue: "my_jobs",
@@ -176,15 +177,16 @@ def id
176177

177178
assert_semantic_logger_event(
178179
messages[0],
179-
level: :error,
180+
level: :info,
180181
name: "Rails",
181-
message_includes: "Failed enqueuing ActiveJobTest::MyJob, a before_enqueue callback halted the enqueuing execution.",
182+
message_includes: "Failed enqueuing ActiveJobTest::MyJob",
182183
payload_includes: {
183184
job_class: "ActiveJobTest::MyJob",
184185
queue: "my_jobs",
185186
event_name: "enqueue.active_job"
186187
}
187188
)
189+
assert_match /Failed enqueuing .*, a before_enqueue callback halted the enqueuing execution/, messages[0].message
188190
assert_includes messages[0].payload, :job_id
189191
end
190192
end

0 commit comments

Comments
 (0)