summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVinay Sajip <vinay_sajip@yahoo.co.uk>2009-07-13 11:28:25 (GMT)
committerVinay Sajip <vinay_sajip@yahoo.co.uk>2009-07-13 11:28:25 (GMT)
commitd4fabf410dd1675e25db6d49d3d84336f59b620c (patch)
treeb0b10c823d1038edf64482f90616b414ab112ca7
parentf67367e28bc8665e518b8588b3ad90ea7950965d (diff)
downloadcpython-d4fabf410dd1675e25db6d49d3d84336f59b620c.zip
cpython-d4fabf410dd1675e25db6d49d3d84336f59b620c.tar.gz
cpython-d4fabf410dd1675e25db6d49d3d84336f59b620c.tar.bz2
Issue #6314: logging: Extra checks on the "level" argument.
-rw-r--r--Lib/logging/__init__.py23
-rw-r--r--Misc/NEWS17
2 files changed, 23 insertions, 17 deletions
diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py
index f932110..5072019 100644
--- a/Lib/logging/__init__.py
+++ b/Lib/logging/__init__.py
@@ -176,6 +176,17 @@ def addLevelName(level, levelName):
finally:
_releaseLock()
+def _checkLevel(level):
+ if isinstance(level, int):
+ rv = level
+ elif str(level) == level:
+ if level not in _levelNames:
+ raise ValueError("Unknown level: %r" % level)
+ rv = _levelNames[level]
+ else:
+ raise TypeError("Level not an integer or a valid string: %r" % level)
+ return rv
+
#---------------------------------------------------------------------------
# Thread-related stuff
#---------------------------------------------------------------------------
@@ -593,7 +604,7 @@ class Handler(Filterer):
and the filter list to empty.
"""
Filterer.__init__(self)
- self.level = level
+ self.level = _checkLevel(level)
self.formatter = None
#get the module data lock, as we're updating a shared structure.
_acquireLock()
@@ -631,7 +642,7 @@ class Handler(Filterer):
"""
Set the logging level of this handler.
"""
- self.level = level
+ self.level = _checkLevel(level)
def format(self, record):
"""
@@ -1009,7 +1020,7 @@ class Logger(Filterer):
"""
Filterer.__init__(self)
self.name = name
- self.level = level
+ self.level = _checkLevel(level)
self.parent = None
self.propagate = 1
self.handlers = []
@@ -1019,7 +1030,7 @@ class Logger(Filterer):
"""
Set the logging level of this logger.
"""
- self.level = level
+ self.level = _checkLevel(level)
def debug(self, msg, *args, **kwargs):
"""
@@ -1396,10 +1407,6 @@ def basicConfig(**kwargs):
root.addHandler(hdlr)
level = kwargs.get("level")
if level is not None:
- if str(level) == level: # If a string was passed, do more checks
- if level not in _levelNames:
- raise ValueError("Unknown level: %r" % level)
- level = _levelNames[level]
root.setLevel(level)
#---------------------------------------------------------------------------
diff --git a/Misc/NEWS b/Misc/NEWS
index b2ce671..f4670e6 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -90,8 +90,7 @@ Core and Builtins
Library
-------
-- Issue #6314: logging.basicConfig() performs extra checks on the "level"
- argument.
+- Issue #6314: logging: performs extra checks on the "level" argument.
- Issue #6274: Fixed possible file descriptors leak in subprocess.py
@@ -133,7 +132,7 @@ Library
-------
- Issue #6438: Fixed distutils.cygwinccompiler.get_versions : the regular
- expression string pattern was trying to match against a bytes returned by
+ expression string pattern was trying to match against a bytes returned by
Popen. Tested under win32 to build the py-postgresql project.
- Issue #6258: Support AMD64 in bdist_msi.
@@ -892,22 +891,22 @@ Core and Builtins
Library
-------
-- Issue #6459: distutils.command.build_ext.get_export_symbols now uses the
- "PyInit" prefix, rather than "init".
+- Issue #6459: distutils.command.build_ext.get_export_symbols now uses the
+ "PyInit" prefix, rather than "init".
-- Issue #6455: Fixed test_build_ext under win32.
+- Issue #6455: Fixed test_build_ext under win32.
-- Issue #6377: Enabled the compiler option, and deprecate its usage as an
+- Issue #6377: Enabled the compiler option, and deprecate its usage as an
attribute.
- Issue #6413: Fixed the log level in distutils.dist for announce.
- Issue #6403: Fixed package path usage in build_ext.
-- Issue #6365: Distutils build_ext inplace mode was copying the compiled
+- Issue #6365: Distutils build_ext inplace mode was copying the compiled
extension in a subdirectory if the extension name had dots.
-- Issue #6164: Added an AIX specific linker argument in Distutils
+- Issue #6164: Added an AIX specific linker argument in Distutils
unixcompiler. Original patch by Sridhar Ratnakumar.
- Issue #6286: Now Distutils upload command is based on urllib2 instead of