aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2010-07-18 17:37:39 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2010-07-18 17:37:39 -0700
commitad8f4dfc50fe3858b80aeceb6d9240d2af4a2fea (patch)
tree3672aa524371a9f46c786319dfe9cc3e3cf8d66c /activesupport
parent8cbb89c0bf33e6daad3f91c6debd283b979d800c (diff)
downloadrails-ad8f4dfc50fe3858b80aeceb6d9240d2af4a2fea.tar.gz
rails-ad8f4dfc50fe3858b80aeceb6d9240d2af4a2fea.tar.bz2
rails-ad8f4dfc50fe3858b80aeceb6d9240d2af4a2fea.zip
avoid proc activation every time a log message is made
Diffstat (limited to 'activesupport')
-rw-r--r--activesupport/lib/active_support/log_subscriber.rb23
1 files changed, 14 insertions, 9 deletions
diff --git a/activesupport/lib/active_support/log_subscriber.rb b/activesupport/lib/active_support/log_subscriber.rb
index 891d718af3..7611aff964 100644
--- a/activesupport/lib/active_support/log_subscriber.rb
+++ b/activesupport/lib/active_support/log_subscriber.rb
@@ -63,15 +63,9 @@ module ActiveSupport
@@flushable_loggers = nil
log_subscriber.public_methods(false).each do |event|
- notifier.subscribe("#{event}.#{namespace}") do |*args|
- next if log_subscriber.logger.nil?
-
- begin
- log_subscriber.send(event, ActiveSupport::Notifications::Event.new(*args))
- rescue Exception => e
- log_subscriber.logger.error "Could not log #{args[0].inspect} event. #{e.class}: #{e.message}"
- end
- end
+ next if 'call' == event.to_s
+
+ notifier.subscribe("#{event}.#{namespace}", log_subscriber)
end
end
@@ -92,6 +86,17 @@ module ActiveSupport
flushable_loggers.each(&:flush)
end
+ def call(message, *args)
+ return unless logger
+
+ method = message.split('.').first
+ begin
+ send(method, ActiveSupport::Notifications::Event.new(message, *args))
+ rescue Exception => e
+ logger.error "Could not log #{message.inspect} event. #{e.class}: #{e.message}"
+ end
+ end
+
protected
%w(info debug warn error fatal unknown).each do |level|