Sha256: fd797531df98e5d6c5a5c45725fd85e9c31c4780f59b56fcc5ec530e2b576944

Contents?: true

Size: 1.19 KB

Versions: 3

Compression:

Stored size: 1.19 KB

Contents

# frozen_string_literal: true

require 'sidekiq/job_logger'

module Loga
  module Sidekiq7
    class JobLogger < ::Sidekiq::JobLogger
      EVENT_TYPE = 'sidekiq'.freeze

      def call(item, _queue)
        start = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC)

        yield

        ::Sidekiq::Context.add(:elapsed, elapsed(start))

        loga_log(message: "#{item['class']} with jid: '#{item['jid']}' done", item: item)
      rescue Exception => e # rubocop:disable Lint/RescueException
        ::Sidekiq::Context.add(:elapsed, elapsed(start))

        loga_log(
          message: "#{item['class']} with jid: '#{item['jid']}' fail", item: item,
          exception: e
        )

        raise
      end

      private

      def loga_log(message:, item:, exception: nil)
        data = item.select do |k, _v|
          %w[created_at enqueued_at jid queue retry
             class].include? k
        end

        data['params'] = item['args']

        data['exception'] = exception if exception

        event = Event.new(type: EVENT_TYPE, message: message, data: data)

        if exception
          @logger.warn(event)
        else
          @logger.info(event)
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
loga-2.8.1 lib/loga/sidekiq7/job_logger.rb
loga-2.8.0 lib/loga/sidekiq7/job_logger.rb
loga-2.7.0 lib/loga/sidekiq7/job_logger.rb