aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activesupport/lib/active_support/buffered_logger.rb5
-rw-r--r--activesupport/test/buffered_logger_test.rb6
2 files changed, 10 insertions, 1 deletions
diff --git a/activesupport/lib/active_support/buffered_logger.rb b/activesupport/lib/active_support/buffered_logger.rb
index b2c863c893..445d8edf47 100644
--- a/activesupport/lib/active_support/buffered_logger.rb
+++ b/activesupport/lib/active_support/buffered_logger.rb
@@ -96,9 +96,12 @@ module ActiveSupport
@guard.synchronize do
unless buffer.empty?
old_buffer = buffer
- clear_buffer
@log.write(old_buffer.join)
end
+
+ # Important to do this even if buffer was empty or else @buffer will
+ # accumulate empty arrays for each request where nothing was logged.
+ clear_buffer
end
end
diff --git a/activesupport/test/buffered_logger_test.rb b/activesupport/test/buffered_logger_test.rb
index 28dd34334f..e178ced06d 100644
--- a/activesupport/test/buffered_logger_test.rb
+++ b/activesupport/test/buffered_logger_test.rb
@@ -137,4 +137,10 @@ class BufferedLoggerTest < Test::Unit::TestCase
assert @output.string.include?("a\nb\nc\n")
assert @output.string.include?("x\ny\nz\n")
end
+
+ def test_flush_should_remove_empty_buffers
+ @logger.send :buffer
+ @logger.expects :clear_buffer
+ @logger.flush
+ end
end