module Resque::Plugins::CustomLogger

def before_perform(*args)

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
  
  Resque.logger = logger
  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