Skip to content

Commit 3975dfd

Browse files
owstZimbiX
authored andcommitted
Log full job details rather than just job_id
A partial revert of c43eb24 which didn't include any reasoning/justification for the log simplification. It's useful to be able to log details of the job, particularly the job_class and arguments; if this additional detail isn't desired then it can be removed by using a custom `Que.log_formatter`, for example: ```ruby Que.log_formatter = proc do |data| if (job = data.delete(:job)) data[:job_id] = job[:id] end JSON.dump(data) end ```
1 parent e717fee commit 3975dfd

File tree

3 files changed

+6
-5
lines changed

3 files changed

+6
-5
lines changed

docs/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,7 @@ que --worker-count 1
349349
By default, Que logs important information in JSON to either Rails' logger (when running in a Rails web process) or STDOUT (when running via the `que` executable). So, your logs will look something like:
350350

351351
```
352-
I, [2017-08-12T05:07:31.094201 #4687] INFO -- : {"lib":"que","hostname":"lovelace","pid":21626,"thread":21471100,"event":"job_worked","job_id":6157665,"elapsed":0.531411}
352+
I, [2017-08-12T05:07:31.094201 #4687] INFO -- : {"lib":"que","hostname":"lovelace","pid":98240,"thread":42660,"event":"job_worked","job":{"priority":1,"run_at":"2024-07-24T11:07:10.056514Z","id":2869885284504751564,"job_class":"WorkerJob","error_count":0,"last_error_message":null,"queue":"default","last_error_backtrace":null,"finished_at":null,"expired_at":null,"args":[1],"data":{},"job_schema_version":2,"kwargs":{}},"elapsed":0.001356}
353353
```
354354

355355
Of course you can have it log wherever you like:

lib/que/worker.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ def work_job(metajob)
114114
if VALID_LOG_LEVELS.include?(log_level)
115115
log_message = {
116116
level: log_level,
117-
job_id: metajob.id,
117+
job: metajob.job,
118118
elapsed: elapsed,
119119
}
120120

@@ -133,7 +133,7 @@ def work_job(metajob)
133133
Que.log(
134134
level: :debug,
135135
event: :job_errored,
136-
job_id: metajob.id,
136+
job: metajob.job,
137137
error: {
138138
class: error.class.to_s,
139139
message: error.message,

spec/que/worker_spec.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,8 @@ def finished_job_ids
7474

7575
events = logged_messages.select{|m| m[:event] == 'job_worked'}
7676
assert_equal 3, events.count
77-
assert_equal job_ids, events.map{|m| m[:job_id]}
77+
assert_equal [1, 2, 3], events.map{|m| m.dig(:job, :priority) }
78+
assert_equal job_ids, events.map{|m| m.dig(:job, :id) }
7879
end
7980

8081
it "should handle namespaced job subclasses" do
@@ -228,7 +229,7 @@ def assert_retry_cadence(
228229

229230
# Error should be logged.
230231
event = events.first
231-
assert_equal job_ids.first, event[:job_id]
232+
assert_equal job_ids.first, event.dig(:job, :id)
232233
assert_equal "RuntimeError: Error!", event[:error]
233234

234235
# Errored job should still be in the DB.

0 commit comments

Comments
 (0)