diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py
index 6332f2f..134d923 100644
--- a/Lib/logging/__init__.py
+++ b/Lib/logging/__init__.py
@@ -1240,6 +1240,28 @@
             finally:
                 hdlr.release()
 
+    def hasHandlers(self):
+        """
+        See if this logger has any handlers configured.
+
+        Loop through all handlers for this logger and its parents in the
+        logger hierarchy. Return True if a handler was found, else False.
+        Stop searching up the hierarchy whenever a logger with the "propagate"
+        attribute set to zero is found - that will be the last logger which
+        is checked for the existence of handlers.
+        """
+        c = self
+        rv = False
+        while c:
+            if c.handlers:
+                rv = True
+                break
+            if not c.propagate:
+                break
+            else:
+                c = c.parent
+        return rv
+
     def callHandlers(self, record):
         """
         Pass a record to all relevant handlers.
diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py
index 2630abb..7506dba 100644
--- a/Lib/test/test_logging.py
+++ b/Lib/test/test_logging.py
@@ -75,8 +75,8 @@
         # Set two unused loggers: one non-ASCII and one Unicode.
         # This is to test correct operation when sorting existing
         # loggers in the configuration code. See issue 8201.
-        logging.getLogger("\xab\xd7\xbb")
-        logging.getLogger("\u013f\u00d6\u0047")
+        self.logger1 = logging.getLogger("\xab\xd7\xbb")
+        self.logger2 = logging.getLogger("\u013f\u00d6\u0047")
 
         self.root_logger = logging.getLogger("")
         self.original_logging_level = self.root_logger.getEffectiveLevel()
@@ -86,7 +86,11 @@
         self.root_hdlr = logging.StreamHandler(self.stream)
         self.root_formatter = logging.Formatter(self.log_format)
         self.root_hdlr.setFormatter(self.root_formatter)
+        self.assertFalse(self.logger1.hasHandlers())
+        self.assertFalse(self.logger2.hasHandlers())
         self.root_logger.addHandler(self.root_hdlr)
+        self.assertTrue(self.logger1.hasHandlers())
+        self.assertTrue(self.logger2.hasHandlers())
 
     def tearDown(self):
         """Remove our logging stream, and restore the original logging
@@ -1844,7 +1848,6 @@
         self.assertLogFile(self.fn + ".2")
         self.assertFalse(os.path.exists(self.fn + ".3"))
 
-
 class TimedRotatingFileHandlerTest(BaseFileTest):
     # test methods added below
     pass
@@ -1865,8 +1868,6 @@
         self.assertEquals(exp, rh.computeRollover(0.0))
     setattr(TimedRotatingFileHandlerTest, "test_compute_rollover_%s" % when, test_compute_rollover)
 
-
-
 # Set the locale to the platform-dependent default.  I have no idea
 # why the test does this, but in any case we save the current locale
 # first and restore it at the end.
