# HG changeset patch # Parent bbc929bc2224e0329167978a96110b4ec019afa9 diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -1194,6 +1194,8 @@ Initialize the logger with a name and an optional level. """ Filterer.__init__(self) + if name and not isinstance(name, str): + raise TypeError("invalid name: %r" % name) self.name = name self.level = _checkLevel(level) self.parent = None diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@ -3512,6 +3512,19 @@ self.addCleanup(setattr, self.logger.manager, 'disable', old_disable) self.assertFalse(self.logger.isEnabledFor(22)) + def test_invalid_names(self): + self.assertRaises(TypeError, logging.Logger, any) + self.assertRaises(TypeError, logging.Logger, {0}) + + self.assertRaises(TypeError, logging.getLogger, all) + self.assertRaises(TypeError, logging.getLogger, ('foo',)) + self.assertRaises(TypeError, logging.getLogger, b'foo') + self.assertRaises(TypeError, logging.getLogger, True) + self.assertRaises(TypeError, logging.getLogger, 1) + + self.assertRaises(TypeError, logging.getLogger, {0}) + self.assertRaises(TypeError, logging.getLogger, bytearray(b'foo')) + class BaseFileTest(BaseTest): "Base class for handler tests that write log files"