diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2010-07-18 17:37:39 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2010-07-18 17:37:39 -0700 |
commit | ad8f4dfc50fe3858b80aeceb6d9240d2af4a2fea (patch) | |
tree | 3672aa524371a9f46c786319dfe9cc3e3cf8d66c | |
parent | 8cbb89c0bf33e6daad3f91c6debd283b979d800c (diff) | |
download | rails-ad8f4dfc50fe3858b80aeceb6d9240d2af4a2fea.tar.gz rails-ad8f4dfc50fe3858b80aeceb6d9240d2af4a2fea.tar.bz2 rails-ad8f4dfc50fe3858b80aeceb6d9240d2af4a2fea.zip |
avoid proc activation every time a log message is made
-rw-r--r-- | activesupport/lib/active_support/log_subscriber.rb | 23 |
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| |