Sha256: 53561d9060c1dc9632177845321d149ec04f4fe8a5e8b0d865a9781aca5bab3c

Contents?: true

Size: 1.11 KB

Versions: 4

Compression:

Stored size: 1.11 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.
# 
# Usage: 
#    require 'resque/plugins/custom_logger'
#    class ExecuteWorkflowJob
#      extend Resque::Plugins::CustomLogger
#      ...
#    end

module Resque
  module Plugins
    module CustomLogger
      def before_perform(args = nil)
        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
        
        Resque.logger = logger
        Rails.logger = logger
        
        Rails.logger.info(args.to_json) if args.present?
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
zuora_connect-1.7.710 lib/resque/plugins/custom_logger.rb
zuora_connect-1.7.71 lib/resque/plugins/custom_logger.rb
zuora_connect-1.7.70 lib/resque/plugins/custom_logger.rb
zuora_connect-1.7.69 lib/resque/plugins/custom_logger.rb