mirror of
https://github.com/mperham/sidekiq.git
synced 2022-11-09 13:52:34 -05:00
3845832c20
* Check Config File Existence (#4054) * Check config file existence * Eager config file check * Parse expanded path to default sidekiq.yml config file in Rails app * Cleanup * Add minitest-around * Extract context from formatter * Add JSON logger formatter * Adjust job logger to handle elapsed time within context * Add tid test * Rename processor logger * Enforce global state reset in logging tests * Add warning about upcoming refactoring to Sidekiq::Logging * Replace around hook with explicit stub inside test It's implemented with fibers, which means Thread.current returns different values in JRuby. * Fix typo * Concise JSON formatter keys * Add logger_formatter option * Shift context from array of strings to hash Allows more flexibly format context in the different formatters. * Adjust warning message regarding context type change * Add "Formatter" suffix to classes * Fix CLI specs * Replace Sidekiq::Logging with Sidekiq::Logger * Namespace logger formatters * Remove rails 4 appraisal
52 lines
1.2 KiB
Ruby
52 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Sidekiq
|
|
class JobLogger
|
|
|
|
def call(item, queue)
|
|
start = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC)
|
|
|
|
Sidekiq.logger.info("start")
|
|
|
|
yield
|
|
|
|
with_elapsed_time_context(start) do
|
|
Sidekiq.logger.info("done")
|
|
end
|
|
rescue Exception
|
|
with_elapsed_time_context(start) do
|
|
Sidekiq.logger.info("fail")
|
|
end
|
|
|
|
raise
|
|
end
|
|
|
|
def with_job_hash_context(job_hash, &block)
|
|
Sidekiq.logger.with_context(job_hash_context(job_hash), &block)
|
|
end
|
|
|
|
def job_hash_context(job_hash)
|
|
# If we're using a wrapper class, like ActiveJob, use the "wrapped"
|
|
# attribute to expose the underlying thing.
|
|
{
|
|
class: job_hash['wrapped'] || job_hash["class"],
|
|
jid: job_hash['jid'],
|
|
bid: job_hash['bid']
|
|
}
|
|
end
|
|
|
|
def with_elapsed_time_context(start, &block)
|
|
Sidekiq.logger.with_context(elapsed_time_context(start), &block)
|
|
end
|
|
|
|
def elapsed_time_context(start)
|
|
{ elapsed: "#{elapsed(start)} sec" }
|
|
end
|
|
|
|
private
|
|
|
|
def elapsed(start)
|
|
(::Process.clock_gettime(::Process::CLOCK_MONOTONIC) - start).round(3)
|
|
end
|
|
end
|
|
end
|