def log_detailed(label, params = {})
      return unless RMQ.app.development? || RMQ.app.test?

      objects = params[:objects]
      skip_first_caller = params[:skip_first_caller]

      if block_given? && !objects
        objects = yield
      end

      callers = caller
      callers = callers.drop(1) if skip_first_caller

      out = %(

        ------------------------------------------------
        Deep log - #{label}
        At: #{Time.now.to_s}

        Callers:
        #{callers.join("\n - ")}

        Objects:
        #{objects.map{|k, v| "#{k.to_s}: #{v.inspect}" }.join("\n\n")}
        ------------------------------------------------

      ).gsub(/^ +/, '')

      NSLog out
      label
    end
def log_detailed(label, params = {})
      return unless RMQ.app.development? || RMQ.app.test?

      objects = params[:objects]
      skip_first_caller = params[:skip_first_caller]

      if block_given? && !objects
        objects = yield
      end

      callers = caller
      callers = callers.drop(1) if skip_first_caller

      out = %(

        ------------------------------------------------
        Deep log - #{label}
        At: #{Time.now.to_s}

        Callers:
        #{callers.join("\n - ")}

        Objects:
        #{objects.map{|k, v| "#{k.to_s}: #{v.inspect}" }.join("\n\n")}
        ------------------------------------------------

      ).gsub(/^ +/, '')

      NSLog out
      label
    end
Warning, this is very slow