aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails/subscriber.rb
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2010-01-14 22:03:47 +0100
committerJosé Valim <jose.valim@gmail.com>2010-01-15 12:24:31 +0100
commitb4019d5080181a911f8652cabd184794963911b6 (patch)
treee9b63bc2ee365b616bd51d1472f447f7b7dcd324 /railties/lib/rails/subscriber.rb
parent8b9bff95579498a0389d7634cafbcee37787c15f (diff)
downloadrails-b4019d5080181a911f8652cabd184794963911b6.tar.gz
rails-b4019d5080181a911f8652cabd184794963911b6.tar.bz2
rails-b4019d5080181a911f8652cabd184794963911b6.zip
Rails::Subscriber is now responsible for flushing all loggers it's responsible for.
Diffstat (limited to 'railties/lib/rails/subscriber.rb')
-rw-r--r--railties/lib/rails/subscriber.rb12
1 files changed, 11 insertions, 1 deletions
diff --git a/railties/lib/rails/subscriber.rb b/railties/lib/rails/subscriber.rb
index f98dec738d..88a6f77eaa 100644
--- a/railties/lib/rails/subscriber.rb
+++ b/railties/lib/rails/subscriber.rb
@@ -30,7 +30,8 @@ module Rails
# purposes(which slows down the main thread). Besides of providing a centralized
# facility on top of Rails.logger.
#
- # Finally, Subscriber some helpers to deal with logging, like managing console colors.
+ # Subscriber also has some helpers to deal with logging and automatically flushes
+ # all logs when the request finishes (via action_dispatch.callback notification).
class Subscriber
cattr_accessor :colorize_logging, :instance_writer => false
self.colorize_logging = true
@@ -64,6 +65,15 @@ module Rails
if subscriber.respond_to?(name) && subscriber.logger
subscriber.send(name, ActiveSupport::Notifications::Event.new(*args))
end
+
+ flush_all! if args[0] == "action_dispatch.callback"
+ end
+
+ # Flush all subscribers' logger.
+ def self.flush_all!
+ loggers = subscribers.values.map(&:logger)
+ loggers.uniq!
+ loggers.each { |l| l.flush if l.respond_to?(:flush) }
end
# By default, we use the Rails.logger for logging.