diff --git a/activesupport/lib/active_support/tagged_logging.rb b/activesupport/lib/active_support/tagged_logging.rb index ed551011a4..0bc4a21401 100644 --- a/activesupport/lib/active_support/tagged_logging.rb +++ b/activesupport/lib/active_support/tagged_logging.rb @@ -79,7 +79,7 @@ module ActiveSupport end def self.new(logger) - logger = logger.dup + logger = logger.clone if logger.formatter logger.formatter = logger.formatter.dup diff --git a/activesupport/test/tagged_logging_test.rb b/activesupport/test/tagged_logging_test.rb index 959603c92a..fb9aca78e3 100644 --- a/activesupport/test/tagged_logging_test.rb +++ b/activesupport/test/tagged_logging_test.rb @@ -214,4 +214,16 @@ class TaggedLoggingWithoutBlockTest < ActiveSupport::TestCase assert_equal "[BCX] [Jason] Funky time\n[BCX] Junky time!\n", @output.string end + + test "keeps broadcasting functionality" do + broadcast_output = StringIO.new + broadcast_logger = ActiveSupport::TaggedLogging.new(Logger.new(broadcast_output)) + @logger.extend(ActiveSupport::Logger.broadcast(broadcast_logger)) + + tagged_logger = @logger.tagged("OMG") + tagged_logger.info "Broadcasting..." + + assert_equal "[OMG] Broadcasting...\n", @output.string + assert_equal "[OMG] Broadcasting...\n", broadcast_output.string + end end