Skip to content

Commit

Permalink
Start implementing configurable log levels for jobs.
Browse files Browse the repository at this point in the history
  • Loading branch information
chanks committed May 18, 2018
1 parent 4230d1c commit 89a7a4b
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 12 deletions.
4 changes: 4 additions & 0 deletions lib/que/job_methods.rb
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,10 @@ def _run(args: nil, reraise_errors: false)
raise error if reraise_errors
end

def log_level(elapsed)
:debug
end

private

# This method defines the object on which the various job helper methods are
Expand Down
39 changes: 27 additions & 12 deletions lib/que/worker.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,14 @@
# Workers wrap threads which continuously pull job pks from JobBuffer objects,
# fetch and work those jobs, and export relevant data to ResultQueues.

require 'set'

module Que
class Worker
attr_reader :thread, :priority

VALID_LOG_LEVELS = [:debug, :info, :warn, :error, :fatal, :unknown].to_set.freeze

SQL[:check_job] =
%{
SELECT 1 AS one
Expand Down Expand Up @@ -91,20 +95,31 @@ def work_job(metajob)

Que.run_job_middleware(instance) { instance.tap(&:_run) }

log_message = {
level: :debug,
job_id: metajob.id,
elapsed: (Time.now - start),
}
elapsed = Time.now - start

if error = instance.que_error
log_message[:event] = :job_errored
log_message[:error] = "#{error.class}: #{error.message}".slice(0, 500)
else
log_message[:event] = :job_worked
end
log_level =
if instance.que_error
:error
else
instance.log_level(elapsed)
end

if VALID_LOG_LEVELS.include?(log_level)
log_message = {
level: log_level,
job_id: metajob.id,
elapsed: elapsed,
}

Que.log(log_message)
if error = instance.que_error
log_message[:event] = :job_errored
log_message[:error] = "#{error.class}: #{error.message}".slice(0, 500)
else
log_message[:event] = :job_worked
end

Que.log(log_message)
end

instance
rescue => error
Expand Down
15 changes: 15 additions & 0 deletions lib/que/worker.spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,21 @@ def finished_job_ids
assert_equal [attrs.fetch(:id)], finished_job_ids
end

describe "logging the job's completion" do
it "should default to logging at the debug level" do
WorkerJob.enqueue
run_jobs

skip "figuring out how to test this"
end

it "should use the output of log_level if it is defined"

it "should not log if log_level doesn't return a valid level"

it "should log at the error level if the job fails"
end

describe "when given a priority requirement" do
let(:priority) { 10 }

Expand Down

0 comments on commit 89a7a4b

Please sign in to comment.