lib/heavylog/sidekiq_logger.rb in heavylog-0.0.15 vs lib/heavylog/sidekiq_logger.rb in heavylog-0.0.16

- old
+ new

@@ -1,64 +1,17 @@ # frozen_string_literal: true -module Heavylog - class SidekiqLogger - def initialize(logger=Sidekiq.logger) - @logger = logger - end +require "sidekiq/job_logger" +module Heavylog + class SidekiqLogger < Sidekiq::JobLogger def call(item, _queue) # item = {"class"=>"SuspiciousJob", "args"=>[12754545, [3858890], "invoice"], "retry"=>true, "queue"=>"default", # "jid"=>"5ec968571e358497d70a3cf2", "created_at"=>1540484817.3950138, "enqueued_at"=>1540484817.395076} Heavylog.log_sidekiq(item["jid"], item["class"], item["args"]) - - begin - start = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC) - @logger.info("start") - - yield - - with_elapsed_time_context(start) do - @logger.info("done") - end - - Heavylog.finish_sidekiq - rescue StandardError - with_elapsed_time_context(start) do - @logger.info("fail") - end - - raise - end - end - - def with_job_hash_context(job_hash, &block) - @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. - h = { - class: job_hash["wrapped"] || job_hash["class"], - jid: job_hash["jid"], - } - h[:bid] = job_hash["bid"] if job_hash["bid"] - h - end - - def with_elapsed_time_context(start, &block) - @logger.with_context(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) + super + ensure + Heavylog.finish_sidekiq end end end