diff options
author | José Valim <jose.valim@gmail.com> | 2010-01-14 22:03:47 +0100 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2010-01-15 12:24:31 +0100 |
commit | b4019d5080181a911f8652cabd184794963911b6 (patch) | |
tree | e9b63bc2ee365b616bd51d1472f447f7b7dcd324 /railties/lib/rails/subscriber.rb | |
parent | 8b9bff95579498a0389d7634cafbcee37787c15f (diff) | |
download | rails-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.rb | 12 |
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. |