Sha256: 9b9c513f63c09d7f19601e88cc66768ccced3c7b46ab0699e0050ed77ad4349e

Contents?: true

Size: 1.42 KB

Versions: 4

Compression:

Stored size: 1.42 KB

Contents

module Mongo
  module Logging

    def write_logging_startup_message
      log(:warn, "Please note that logging negatively impacts client-side performance. " +
      "You should set your logging level no lower than :info in production.")
    end

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

    # Execute the block and log the operation described by name and payload.
    def instrument(name, payload = {}, &blk)
      res = yield
      log_operation(name, payload)
      res
    end

    protected

    def log_operation(name, payload)
      @logger ||= nil
      return unless @logger
      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 "MONGODB #{msg}"
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
mongo-1.5.2 lib/mongo/util/logging.rb
mongo-1.5.1 lib/mongo/util/logging.rb
mongo-1.5.0 lib/mongo/util/logging.rb
mongo-1.5.0.rc0 lib/mongo/util/logging.rb