  
          all_tests.extend(iter_test_cases(extra_tests))
  
          if self.tags or self.exclude_tags:
              if self.verbosity >= 2:
                  if self.tags:
                      print('Including test tag(s): %s.' % ', '.join(sorted(self.tags)))
                  if self.exclude_tags:
                      print('Excluding test tag(s): %s.' % ', '.join(sorted(self.exclude_tags)))
              all_tests = filter_tests_by_tags(all_tests, self.tags, self.exclude_tags)
  
          # Put the failures detected at load time first for quicker feedback.
          # _FailedTest objects include things like test modules that couldn't be
          # found or that couldn't be loaded due to syntax errors.
 
</s> remove         if self.verbosity >= 1:
            print('Found %d tests.' % len(all_tests))
 </s> add         self.log('Found %d tests.' % len(all_tests), level=logging.INFO) </s> remove         if self.verbosity >= 2:
            unused_databases = [alias for alias in connections if alias not in databases]
            if unused_databases:
                print('Skipping setup of unused database(s): %s.' % ', '.join(sorted(unused_databases)))
 </s> add         unused_databases = [alias for alias in connections if alias not in databases]
        if unused_databases:
            self.log(
                'Skipping setup of unused database(s): %s.' % ', '.join(sorted(unused_databases)),
                level=logging.DEBUG,
            )
            if self.tags:
                self.log(
                    'Including test tag(s): %s.' % ', '.join(sorted(self.tags)),
                    level=logging.DEBUG,
                )
            if self.exclude_tags:
                self.log(
                    'Excluding test tag(s): %s.' % ', '.join(sorted(self.exclude_tags)),
                    level=logging.DEBUG,
                )
  
          all_tests.extend(iter_test_cases(extra_tests))
  
          if self.tags or self.exclude_tags:
            if self.tags:
                self.log(
                    'Including test tag(s): %s.' % ', '.join(sorted(self.tags)),
                    level=logging.DEBUG,
                )
            if self.exclude_tags:
                self.log(
                    'Excluding test tag(s): %s.' % ', '.join(sorted(self.exclude_tags)),
                    level=logging.DEBUG,
                )
            if self.tags:
                self.log(
                    'Including test tag(s): %s.' % ', '.join(sorted(self.tags)),
                    level=logging.DEBUG,
                )
            if self.exclude_tags:
                self.log(
                    'Excluding test tag(s): %s.' % ', '.join(sorted(self.exclude_tags)),
                    level=logging.DEBUG,
                )
            if self.tags:
                self.log(
                    'Including test tag(s): %s.' % ', '.join(sorted(self.tags)),
                    level=logging.DEBUG,
                )
            if self.exclude_tags:
                self.log(
                    'Excluding test tag(s): %s.' % ', '.join(sorted(self.exclude_tags)),
                    level=logging.DEBUG,
                )
            if self.tags:
                self.log(
                    'Including test tag(s): %s.' % ', '.join(sorted(self.tags)),
                    level=logging.DEBUG,
                )
            if self.exclude_tags:
                self.log(
                    'Excluding test tag(s): %s.' % ', '.join(sorted(self.exclude_tags)),
                    level=logging.DEBUG,
                )
            if self.tags:
                self.log(
                    'Including test tag(s): %s.' % ', '.join(sorted(self.tags)),
                    level=logging.DEBUG,
                )
            if self.exclude_tags:
                self.log(
                    'Excluding test tag(s): %s.' % ', '.join(sorted(self.exclude_tags)),
                    level=logging.DEBUG,
                )
              all_tests = filter_tests_by_tags(all_tests, self.tags, self.exclude_tags)
  
          # Put the failures detected at load time first for quicker feedback.
          # _FailedTest objects include things like test modules that couldn't be
          # found or that couldn't be loaded due to syntax errors.
keep keep keep keep replace replace replace replace replace keep keep keep keep keep
 Refs #32552 -- Added DiscoverRunner.log() to allow customization.

Thanks Carlton Gibson, Chris Jerdonek, and David Smith for reviews. 
django/test/runner.py