Clean up AbstractController::Logger and write documentation

上级 f35f47b8
......@@ -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 @@ def to_s
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 @@ def process(action)
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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册