Sha256: eef4a7a2aae6f4eb2ee93c6f53486cd8b69300d546d674bd3be96e262cdc1982

Contents?: true

Size: 1.25 KB

Versions: 7

Compression:

Stored size: 1.25 KB

Contents

# This Resque extension changes the resque default logger to monologger
# and formats the log in json format.
# 
# Monologger supports printing logs in trap block.
# 
module Resque
  module Plugins
    module CustomLogger
      def before_perform(*args)
        marker = SecureRandom.uuid
        
        logger = MonoLogger.new(STDOUT)
        logger.level = Rails.application.config.log_level
        logger.formatter = proc do |serverity, datetime, progname, msg|
          begin
            msg = JSON.parse(msg)
          rescue JSON::ParserError => ex
          end

          require 'json'
          JSON.dump(
            trace_id: marker,
            level: serverity,
            timestamp: datetime.strftime('%FT%T.%6N'),
            pid: Process.pid,
            msg: msg
          ) + "\n"
        end
        
        Rails.logger = logger
        case args.class.to_s
        when "Array"
          if args.first.class == Hash
            data = args.first.merge({:worker_class => self.to_s})
          else
            data = {:worker_class => self.to_s, :args => args}
          end
        when "Hash"
          data = args.merge({:worker_class => self.to_s})
        end
        Rails.logger.info(data.to_json) if data.present?
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
zuora_connect-1.7.81t lib/resque/plugins/custom_logger.rb
zuora_connect-1.7.81s lib/resque/plugins/custom_logger.rb
zuora_connect-1.8.71s lib/resque/plugins/custom_logger.rb
zuora_connect-1.7.81r lib/resque/plugins/custom_logger.rb
zuora_connect-1.7.81q lib/resque/plugins/custom_logger.rb
zuora_connect-1.7.81o lib/resque/plugins/custom_logger.rb
zuora_connect-1.7.81n lib/resque/plugins/custom_logger.rb