# frozen_string_literal: true require 'sidekiq' module Sidekiq module ExceptionHandler class Logger def call(ex, ctxHash) Sidekiq.logger.warn(Sidekiq.dump_json(ctxHash)) if !ctxHash.empty? Sidekiq.logger.warn "#{ex.class.name}: #{ex.message}" Sidekiq.logger.warn ex.backtrace.join("\n") unless ex.backtrace.nil? end # Set up default handler which just logs the error Sidekiq.error_handlers << Sidekiq::ExceptionHandler::Logger.new end def handle_exception(ex, ctxHash={}) Sidekiq.error_handlers.each do |handler| begin handler.call(ex, ctxHash) rescue => ex Sidekiq.logger.error "!!! ERROR HANDLER THREW AN ERROR !!!" Sidekiq.logger.error ex Sidekiq.logger.error ex.backtrace.join("\n") unless ex.backtrace.nil? end end end end end