diff options
author | Yehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com> | 2009-06-09 17:03:02 -0700 |
---|---|---|
committer | Yehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com> | 2009-06-09 17:03:02 -0700 |
commit | b6fde6b4801fae26cdd0e790f6bfd06e7afe9941 (patch) | |
tree | 6bad636bd6d8c96a536be108234aa207f0591fd2 | |
parent | f35f47b8c0bbb181352e9c957f02693cb1801b76 (diff) | |
download | rails-b6fde6b4801fae26cdd0e790f6bfd06e7afe9941.tar.gz rails-b6fde6b4801fae26cdd0e790f6bfd06e7afe9941.tar.bz2 rails-b6fde6b4801fae26cdd0e790f6bfd06e7afe9941.zip |
Clean up AbstractController::Logger and write documentation
-rw-r--r-- | actionpack/lib/action_controller/abstract/logger.rb | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/actionpack/lib/action_controller/abstract/logger.rb b/actionpack/lib/action_controller/abstract/logger.rb index d6fa843485..b960e152e3 100644 --- a/actionpack/lib/action_controller/abstract/logger.rb +++ b/actionpack/lib/action_controller/abstract/logger.rb @@ -5,6 +5,13 @@ module AbstractController module Logger extend ActiveSupport::Concern + # 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 + # entire processed String to the logger, which might + # just discard the String if the log level is too low. + # + # TODO: Require that Rails loggers accept a block. class DelayedLog def initialize(&blk) @blk = blk @@ -20,8 +27,10 @@ module AbstractController cattr_accessor :logger end - def process(action) - ret = super + # Override process_action in the AbstractController::Base + # to log details about the method. + def process_action(action) + super if logger log = DelayedLog.new do @@ -32,10 +41,9 @@ module AbstractController logger.info(log) end - - ret end + private def request_origin # this *needs* to be cached! # otherwise you'd get different results if calling it more than once |