Commit cb65b3a4 authored by Vinay Sajip's avatar Vinay Sajip Committed by GitHub

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.
parent 854d0a4b
......@@ -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):
"""
......
......@@ -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)
......
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'.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment