8000 bpo-37742: Return the root logger when logging.getLogger('root') is c… · python/cpython@cb65b3a · GitHub
[go: up one dir, main page]

Skip to content

Commit cb65b3a

Browse files
authored
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.
1 parent 854d0a4 commit cb65b3a

File tree

3 files changed

+8
-3
lines changed

3 files changed

+8
-3
lines changed

Lib/logging/__init__.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2024,10 +2024,9 @@ def getLogger(name=None):
20242024
20252025
If no name is specified, return the root logger.
20262026
"""
2027-
if name:
2028-
return Logger.manager.getLogger(name)
2029-
else:
2027+
if not name or isinstance(name, str) and name == root.name:
20302028
return root
2029+
return Logger.manager.getLogger(name)
20312030

20322031
def critical(msg, *args, **kwargs):
20332032
"""

Lib/test/test_logging.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4856,6 +4856,7 @@ def test_root_logger_aliases(self):
48564856
self.assertIs(root, logging.root)
48574857
self.assertIs(root, logging.getLogger(None))
48584858
self.assertIs(root, logging.getLogger(''))
4859+
self.assertIs(root, logging.getLogger('root'))
48594860
self.assertIs(root, logging.getLogger('foo').root)
48604861
self.assertIs(root, logging.getLogger('foo.bar').root)
48614862
self.assertIs(root, logging.getLogger('foo').parent)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
The logging.getLogger() API now returns the root logger when passed the name
2+
'root', whereas previously it returned a non-root logger named 'root'. This
3+
could affect cases where user code explicitly wants a non-root logger named
4+
'root', or instantiates a logger using logging.getLogger(__name__) in some
5+
top-level module called 'root.py'.

0 commit comments

Comments
 (0)
0