summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVinay Sajip <vinay_sajip@yahoo.co.uk>2019-08-02 15:53:00 (GMT)
committerGitHub <noreply@github.com>2019-08-02 15:53:00 (GMT)
commitcb65b3a4f484ce71dcb76a918af98c7015513025 (patch)
tree7f4e08a9ed98315e4fe5d0651f9344271db928a2
parent854d0a4b98b13629252e21edaf2b785b429e5135 (diff)
downloadcpython-cb65b3a4f484ce71dcb76a918af98c7015513025.zip
cpython-cb65b3a4f484ce71dcb76a918af98c7015513025.tar.gz
cpython-cb65b3a4f484ce71dcb76a918af98c7015513025.tar.bz2
bpo-37742: Return the root logger when logging.getLogger('root') is c… (#15077)
* bpo-37742: Return the root logger when logging.getLogger('root') is called. * Added type check guard on logger name in logging.getLogger() and refined a test.
-rw-r--r--Lib/logging/__init__.py5
-rw-r--r--Lib/test/test_logging.py1
-rw-r--r--Misc/NEWS.d/next/Library/2019-08-02-14-01-25.bpo-37742.f4Xn9S.rst5
3 files changed, 8 insertions, 3 deletions
diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py
index 645e0b3..62a87a7 100644
--- a/Lib/logging/__init__.py
+++ b/Lib/logging/__init__.py
@@ -2024,10 +2024,9 @@ def getLogger(name=None):
If no name is specified, return the root logger.
"""
- if name:
- return Logger.manager.getLogger(name)
- else:
+ if not name or isinstance(name, str) and name == root.name:
return root
+ return Logger.manager.getLogger(name)
def critical(msg, *args, **kwargs):
"""
diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py
index 6507d79..dca744c 100644
--- a/Lib/test/test_logging.py
+++ b/Lib/test/test_logging.py
@@ -4856,6 +4856,7 @@ class LoggerTest(BaseTest):
self.assertIs(root, logging.root)
self.assertIs(root, logging.getLogger(None))
self.assertIs(root, logging.getLogger(''))
+ self.assertIs(root, logging.getLogger('root'))
self.assertIs(root, logging.getLogger('foo').root)
self.assertIs(root, logging.getLogger('foo.bar').root)
self.assertIs(root, logging.getLogger('foo').parent)
diff --git a/Misc/NEWS.d/next/Library/2019-08-02-14-01-25.bpo-37742.f4Xn9S.rst b/Misc/NEWS.d/next/Library/2019-08-02-14-01-25.bpo-37742.f4Xn9S.rst
new file mode 100644
index 0000000..300ced3
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2019-08-02-14-01-25.bpo-37742.f4Xn9S.rst
@@ -0,0 +1,5 @@
+The logging.getLogger() API now returns the root logger when passed the name
+'root', whereas previously it returned a non-root logger named 'root'. This
+could affect cases where user code explicitly wants a non-root logger named
+'root', or instantiates a logger using logging.getLogger(__name__) in some
+top-level module called 'root.py'.