Issue #29220: Merged fixes from 3.6.
diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py
index fb866f3..49a0692 100644
--- a/Lib/logging/__init__.py
+++ b/Lib/logging/__init__.py
@@ -133,11 +133,12 @@
     """
     # See Issues #22386, #27937 and #29220 for why it's this way
     result = _levelToName.get(level)
-    if result is None:
-        result = _nameToLevel.get(level)
-    if result is None:
-        result = "Level %s" % level
-    return result
+    if result is not None:
+        return result
+    result = _nameToLevel.get(level)
+    if result is not None:
+        return result
+    return "Level %s" % level
 
 def addLevelName(level, levelName):
     """
diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py
index 6a91152..9f482e1 100644
--- a/Lib/test/test_logging.py
+++ b/Lib/test/test_logging.py
@@ -319,6 +319,14 @@
         fatal = logging.getLevelName('FATAL')
         self.assertEqual(fatal, logging.FATAL)
 
+    def test_regression_29220(self):
+        """See issue #29220 for more information."""
+        logging.addLevelName(logging.INFO, '')
+        self.addCleanup(logging.addLevelName, logging.INFO, 'INFO')
+        self.assertEqual(logging.getLevelName(logging.INFO), '')
+        self.assertEqual(logging.getLevelName(logging.NOTSET), 'NOTSET')
+        self.assertEqual(logging.getLevelName('NOTSET'), logging.NOTSET)
+
 class BasicFilterTest(BaseTest):
 
     """Test the bundled Filter class."""