diff --git a/activesupport/lib/active_support/log_subscriber.rb b/activesupport/lib/active_support/log_subscriber.rb index 42df2a2fd5406..4e0db5225c457 100644 --- a/activesupport/lib/active_support/log_subscriber.rb +++ b/activesupport/lib/active_support/log_subscriber.rb @@ -184,6 +184,8 @@ def mode_from(options) end def log_exception(name, e) + ActiveSupport.error_reporter.report(e, source: name) + if logger logger.error "Could not log #{name.inspect} event. #{e.class}: #{e.message} #{e.backtrace}" end diff --git a/activesupport/test/log_subscriber_test.rb b/activesupport/test/log_subscriber_test.rb index 867fd3af2fd28..7e774c15e9b95 100644 --- a/activesupport/test/log_subscriber_test.rb +++ b/activesupport/test/log_subscriber_test.rb @@ -144,10 +144,12 @@ def test_flushes_the_same_logger_just_once end def test_logging_does_not_die_on_failures - ActiveSupport::LogSubscriber.attach_to :my_log_subscriber, @log_subscriber - instrument "puke.my_log_subscriber" - instrument "some_event.my_log_subscriber" - wait + assert_error_reported do + ActiveSupport::LogSubscriber.attach_to :my_log_subscriber, @log_subscriber + instrument "puke.my_log_subscriber" + instrument "some_event.my_log_subscriber" + wait + end assert_equal 1, @logger.logged(:info).size assert_equal "some_event.my_log_subscriber", @logger.logged(:info).last