Sha256: 3e6018a0c23305e3246db78a24cb97679edde615f15b1c66263f08cee866ea09
Contents?: true
Size: 1.49 KB
Versions: 4
Compression:
Stored size: 1.49 KB
Contents
# frozen_string_literal: true module Sidekiq class JobLogger def initialize(logger = Sidekiq.logger) @logger = logger end def call(item, queue) start = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC) @logger.info("start") yield with_elapsed_time_context(start) do @logger.info("done") end rescue Exception with_elapsed_time_context(start) do @logger.info("fail") end raise end def prepare(job_hash, &block) level = job_hash["log_level"] if level @logger.log_at(level) do Sidekiq::Context.with(job_hash_context(job_hash), &block) end else Sidekiq::Context.with(job_hash_context(job_hash), &block) end 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. h = { class: job_hash["display_class"] || job_hash["wrapped"] || job_hash["class"], jid: job_hash["jid"] } h[:bid] = job_hash["bid"] if job_hash["bid"] h[:tags] = job_hash["tags"] if job_hash["tags"] h end def with_elapsed_time_context(start, &block) Sidekiq::Context.with(elapsed_time_context(start), &block) end def elapsed_time_context(start) {elapsed: elapsed(start).to_s} end private def elapsed(start) (::Process.clock_gettime(::Process::CLOCK_MONOTONIC) - start).round(3) end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
sidekiq-6.4.0 | lib/sidekiq/job_logger.rb |
sidekiq-6.3.1 | lib/sidekiq/job_logger.rb |
sidekiq-6.3.0 | lib/sidekiq/job_logger.rb |
sidekiq-6.2.2 | lib/sidekiq/job_logger.rb |