aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/abstract_controller/logger.rb
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2009-09-19 12:31:47 -0300
committerJosé Valim <jose.valim@gmail.com>2009-09-20 10:56:38 -0300
commit7cc1c2e71da1ad277acc7a7664321d2224a56bb8 (patch)
tree3a0aa4da485ebadb82f0e98d983994de02aa64f0 /actionpack/lib/abstract_controller/logger.rb
parent8f47f311b7665d74220baf1449b39dc4e70e13e2 (diff)
downloadrails-7cc1c2e71da1ad277acc7a7664321d2224a56bb8.tar.gz
rails-7cc1c2e71da1ad277acc7a7664321d2224a56bb8.tar.bz2
rails-7cc1c2e71da1ad277acc7a7664321d2224a56bb8.zip
Add Orchestra instrumentation to fragment and page caching.
Diffstat (limited to 'actionpack/lib/abstract_controller/logger.rb')
-rw-r--r--actionpack/lib/abstract_controller/logger.rb31
1 files changed, 23 insertions, 8 deletions
diff --git a/actionpack/lib/abstract_controller/logger.rb b/actionpack/lib/abstract_controller/logger.rb
index 980e9d2a8b..79444761d3 100644
--- a/actionpack/lib/abstract_controller/logger.rb
+++ b/actionpack/lib/abstract_controller/logger.rb
@@ -4,6 +4,26 @@ module AbstractController
module Logger
extend ActiveSupport::Concern
+ included do
+ cattr_accessor :logger
+ end
+
+ module ClassMethods #:nodoc:
+ # Logs a message appending the value measured.
+ def log_with_time(message, time, log_level=::Logger::DEBUG)
+ return unless logger && logger.level >= log_level
+ logger.add(log_level, "#{message} (%.1fms)" % time)
+ end
+
+ # Silences the logger for the duration of the block.
+ def silence
+ old_logger_level, logger.level = logger.level, ::Logger::ERROR if logge
+ yield
+ ensure
+ logger.level = old_logger_level if logger
+ end
+ end
+
# A class that allows you to defer expensive processing
# until the logger actually tries to log. Otherwise, you are
# forced to do the processing in advance, and send the
@@ -24,15 +44,10 @@ module AbstractController
end
end
- included do
- cattr_accessor :logger
- end
-
# Override process_action in the AbstractController::Base
# to log details about the method.
def process_action(action)
- event = ActiveSupport::Orchestra.instrument(:process_action,
- :request => request, :action => action) do
+ event = ActiveSupport::Orchestra.instrument(:process_action, :action => action) do
super
end
@@ -50,9 +65,9 @@ module AbstractController
end
private
+ # Returns the request origin with the IP and time. This needs to be cached,
+ # otherwise we would get different results for each time it calls.
def request_origin
- # this *needs* to be cached!
- # otherwise you'd get different results if calling it more than once
@request_origin ||= "#{request.remote_ip} at #{Time.now.to_s(:db)}"
end
end