Sha256: 5e168f7e9390485ff7d16b425816d4cb1f30c8ded7a4a29e50bd7ad849a2fae8

Contents?: true

Size: 1.45 KB

Versions: 16

Compression:

Stored size: 1.45 KB

Contents

require 'mongo_request_logger/logger'
require 'mongo_request_logger/rack'

module MongoRequestLogger
  # Usage:
  #
  #   class MyJob
  #     extend MongoRequestLogger::LoggedJob
  #
  #     def perform(args)
  #       ...
  #     end
  #   end
  module LoggedJob
    def self.logger= logger
      @logger = logger
    end


    def self.logger
      @logger ||= ::MongoRequestLogger::Rack.logger
    end

    def logger
      LoggedJob.logger
    end

    def around_perform_log_job(*args, &block)
      call_logged *args, &block
    end

    private

    def call_logged *args, &block
      unless logger.respond_to?(:log_request)
        # No MongoDB logger, but still want to log any errors
        begin
          return block.call(*args)
        rescue Exception => e
          logger.error e.to_s
          logger.error e.backtrace.join("\n")
          raise
        end
      end

      # Note that @queue is the default queue for the job class, and may be different from the queue it was on.
      # Therefore we don't log it anymore, to prevent confusion (until we find a way to determine that actual queue that
      # the job was on).

      options = {
          :type => "job",
          :job => self.name,
          :args => args,
      }
      logger.log_request(options) do
        logger.tag "resque"
        short_name = self.name.split('::').last.underscore
        logger.add_metadata path: "resque/#{short_name}"
        block.call(*args)
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
mongo_request_logger-0.8.0 lib/mongo_request_logger/logged_job.rb
mongo_request_logger-0.7.0 lib/mongo_request_logger/logged_job.rb
mongo_request_logger-0.6.0 lib/mongo_request_logger/logged_job.rb
mongo_request_logger-0.5.0 lib/mongo_request_logger/logged_job.rb
mongo_request_logger-0.4.0 lib/mongo_request_logger/logged_job.rb
mongo_request_logger-0.3.1 lib/mongo_request_logger/logged_job.rb
mongo_request_logger-0.3.0 lib/mongo_request_logger/logged_job.rb
mongo_request_logger-0.2.7 lib/mongo_request_logger/logged_job.rb
mongo_request_logger-0.2.6 lib/mongo_request_logger/logged_job.rb
mongo_request_logger-0.2.5 lib/mongo_request_logger/logged_job.rb
mongo_request_logger-0.2.4 lib/mongo_request_logger/logged_job.rb
mongo_request_logger-0.2.3 lib/mongo_request_logger/logged_job.rb
mongo_request_logger-0.2.2 lib/mongo_request_logger/logged_job.rb
mongo_request_logger-0.2.1 lib/mongo_request_logger/logged_job.rb
mongo_request_logger-0.2.0 lib/mongo_request_logger/logged_job.rb
mongo_request_logger-0.1.0 lib/mongo_request_logger/logged_job.rb