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