Sha256: a0dbe49441c890a38e3f5b19660f1f6dc4a7b9029364a4d66358c1e1361c848f

Contents?: true

Size: 1.78 KB

Versions: 99

Compression:

Stored size: 1.78 KB

Contents

module Mongo
  module Logging

    DEBUG_LEVEL = defined?(Logger) ? Logger::DEBUG : 0

    def write_logging_startup_message
      if @logger && (@logger.level == DEBUG_LEVEL)
        log(:debug, "Logging level is currently :debug which could negatively impact " +
          "client-side performance. You should set your logging level no lower than " +
          ":info in production.")
      end
    end

    # Log a message with the given level.
    def log(level, msg)
      return unless @logger
      case level
        when :fatal then
          @logger.fatal "MONGODB [FATAL] #{msg}"
        when :error then
          @logger.error "MONGODB [ERROR] #{msg}"
        when :warn then
          @logger.warn "MONGODB [WARNING] #{msg}"
        when :info then
          @logger.info "MONGODB [INFO] #{msg}"
        when :debug then
          @logger.debug "MONGODB [DEBUG] #{msg}"
        else
          @logger.debug "MONGODB [DEBUG] #{msg}"
      end
    end

    # Execute the block and log the operation described by name and payload.
    def instrument(name, payload = {}, &blk)
      start_time = Time.now
      res = yield
      if @logger && (@logger.level == DEBUG_LEVEL)
        log_operation(name, payload, start_time)
      end
      res
    end

    protected

    def log_operation(name, payload, start_time)
      msg = "MONGODB "
      msg << "(#{((Time.now - start_time) * 1000).to_i}ms) "
      msg << "#{payload[:database]}['#{payload[:collection]}'].#{name}("
      msg << payload.values_at(:selector, :document, :documents, :fields ).compact.map(&:inspect).join(', ') + ")"
      msg << ".skip(#{payload[:skip]})"   if payload[:skip]
      msg << ".limit(#{payload[:limit]})" if payload[:limit]
      msg << ".sort(#{payload[:order]})"  if payload[:order]

      @logger.debug(msg)
    end

  end
end

Version data entries

99 entries across 53 versions & 3 rubygems

Version Path
classiccms-0.7.5 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/logging.rb
classiccms-0.7.5 vendor/bundle/gems/mongo-1.6.2/lib/mongo/util/logging.rb
classiccms-0.7.4 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/logging.rb
classiccms-0.7.4 vendor/bundle/gems/mongo-1.6.2/lib/mongo/util/logging.rb
classiccms-0.7.3 vendor/bundle/gems/mongo-1.6.2/lib/mongo/util/logging.rb
classiccms-0.7.3 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/logging.rb
classiccms-0.7.2 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/logging.rb
classiccms-0.7.2 vendor/bundle/gems/mongo-1.6.2/lib/mongo/util/logging.rb
classiccms-0.7.1 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/logging.rb
classiccms-0.7.1 vendor/bundle/gems/mongo-1.6.2/lib/mongo/util/logging.rb
classiccms-0.7.0 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/logging.rb
classiccms-0.7.0 vendor/bundle/gems/mongo-1.6.2/lib/mongo/util/logging.rb
classiccms-0.6.9 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/logging.rb
classiccms-0.6.9 vendor/bundle/gems/mongo-1.6.2/lib/mongo/util/logging.rb
classiccms-0.6.8 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/logging.rb
classiccms-0.6.8 vendor/bundle/gems/mongo-1.6.2/lib/mongo/util/logging.rb
classiccms-0.6.7 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/logging.rb
classiccms-0.6.7 vendor/bundle/gems/mongo-1.6.2/lib/mongo/util/logging.rb
classiccms-0.6.6 vendor/bundle/gems/mongo-1.6.1/lib/mongo/util/logging.rb
classiccms-0.6.6 vendor/bundle/gems/mongo-1.6.2/lib/mongo/util/logging.rb