Sha256: 50b760aea19772c8f2eae0e10d446d3fb38acffcf4e28d43bc8c1ae987434128

Contents?: true

Size: 1.68 KB

Versions: 28

Compression:

Stored size: 1.68 KB

Contents

module Sunspot
  module Rails
    module SolrLogging

      class <<self
        def included(base)
          base.alias_method_chain :execute, :rails_logging
        end
      end

      COMMIT = %r{<commit/>}

      def execute_with_rails_logging(client, request_context)
        body = (request_context[:data]||"").dup
        action = request_context[:path].capitalize
        if body =~ COMMIT
          action = "Commit"
          body = ""
        end
        body = body[0, 800] + '...' if body.length > 800

        # Make request and log.
        response = nil
        begin
          ms = Benchmark.ms do
            response = execute_without_rails_logging(client, request_context)
          end
          log_name = 'Solr %s (%.1fms)' % [action, ms]
          ::Rails.logger.debug(format_log_entry(log_name, body))
        rescue Exception => e
          log_name = 'Solr %s (Error)' % [action]
          ::Rails.logger.error(format_log_entry(log_name, body))
          raise e
        end

        response
      end

      private

      def format_log_entry(message, dump = nil)
        @colorize_logging ||= begin
          ::Rails.application.config.colorize_logging # Rails 3
        rescue NoMethodError
          ActiveRecord::Base.colorize_logging # Rails 2
        end
        if @colorize_logging
          message_color, dump_color = "4;32;1", "0;1"
          log_entry = "  \e[#{message_color}m#{message}\e[0m   "
          log_entry << "\e[#{dump_color}m%#{String === dump ? 's' : 'p'}\e[0m" % dump if dump
          log_entry
        else
          "%s  %s" % [message, dump]
        end
      end
    end
  end
end

RSolr::Connection.module_eval do
  include Sunspot::Rails::SolrLogging
end

Version data entries

28 entries across 28 versions & 8 rubygems

Version Path
sunspot_rails-2.0.0 lib/sunspot/rails/solr_logging.rb
sunspot_rails-2.0.0.pre.130115 lib/sunspot/rails/solr_logging.rb
substantial-sunspot_rails-2.0.0.pre.111215 lib/sunspot/rails/solr_logging.rb
gojee-sunspot-rails-2.0.5 lib/sunspot/rails/solr_logging.rb
sunspot_rails-2.0.0.pre.120925 lib/sunspot/rails/solr_logging.rb
sunspot_solr-2.0.0.pre.120924 sunspot_rails/lib/sunspot/rails/solr_logging.rb
sunspot_rails-2.0.0.pre.120924 sunspot_rails/lib/sunspot/rails/solr_logging.rb
sunspot-2.0.0.pre.120924 sunspot_rails/lib/sunspot/rails/solr_logging.rb
gojee-sunspot-rails-2.0.4 lib/sunspot/rails/solr_logging.rb
gojee-sunspot-rails-2.0.2 lib/sunspot/rails/solr_logging.rb
sunspot_rails-2.0.0.pre.120720 lib/sunspot/rails/solr_logging.rb
sunspot_rails-1.3.3 lib/sunspot/rails/solr_logging.rb
sunspot_rails-1.3.2 lib/sunspot/rails/solr_logging.rb
sunspot_rails-2.0.0.pre.120417 lib/sunspot/rails/solr_logging.rb
sunspot_rails-2.0.0.pre.120415 lib/sunspot/rails/solr_logging.rb
sunspot_rails-1.3.1 lib/sunspot/rails/solr_logging.rb
erichummel-sunspot_rails-2.0.0.pre.111215d lib/sunspot/rails/solr_logging.rb
erichummel-sunspot_rails-2.0.0.pre.111215c lib/sunspot/rails/solr_logging.rb
erichummel-sunspot_rails-2.0.0.pre.111215b lib/sunspot/rails/solr_logging.rb
erichummel-sunspot_rails-2.0.0.pre.111215a lib/sunspot/rails/solr_logging.rb