Sha256: ba8935d30b0dd9f7200f7cce7f5afc4973e38506f514043e2c35e512ffc8242a

Contents?: true

Size: 962 Bytes

Versions: 4

Compression:

Stored size: 962 Bytes

Contents

# integrates Logtail::CurrentContext with Sidekiq::Context if installed

begin
  require 'sidekiq/component'
  require 'sidekiq/job_logger'

  class Sidekiq::JobLogger
    def call(_item, _queue)
      start = Process.clock_gettime(Process::CLOCK_MONOTONIC)

      Logtail::CurrentContext.with({ sidekiq: Sidekiq::Context.current.to_h }) do
        @logger.info("start")

        yield
      end

      Sidekiq::Context.add(:elapsed, elapsed(start))
      Logtail::CurrentContext.with({ sidekiq: Sidekiq::Context.current.to_h }) do
        @logger.info('done')
      end
    rescue Exception
      Sidekiq::Context.add(:elapsed, elapsed(start))
      Logtail::CurrentContext.with({ sidekiq: Sidekiq::Context.current.to_h }) do
        @logger.info('fail')
      end

      raise
    end

    private

    def elapsed(start)
      (Process.clock_gettime(::Process::CLOCK_MONOTONIC) - start).round(3)
    end
  end

rescue LoadError
  # sidekiq is not present
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
logtail-rails-0.2.10 lib/logtail-rails/sidekiq.rb
logtail-rails-0.2.9 lib/logtail-rails/sidekiq.rb
logtail-rails-0.2.8 lib/logtail-rails/sidekiq.rb
logtail-rails-0.2.7 lib/logtail-rails/sidekiq.rb