summaryrefslogtreecommitdiffstats
path: root/Lib/logging/__init__.py
diff options
context:
space:
mode:
authorVinay Sajip <vinay_sajip@yahoo.co.uk>2009-07-13 11:21:05 (GMT)
committerVinay Sajip <vinay_sajip@yahoo.co.uk>2009-07-13 11:21:05 (GMT)
commitcbb24b35a03f382e560ca4b5fd17bcfe6e67c0f7 (patch)
treea3b5f87b942a12ad0176cb655df44c967db0c54b /Lib/logging/__init__.py
parentd50a5d5debb3981147933d37583c6990b36bd024 (diff)
downloadcpython-cbb24b35a03f382e560ca4b5fd17bcfe6e67c0f7.zip
cpython-cbb24b35a03f382e560ca4b5fd17bcfe6e67c0f7.tar.gz
cpython-cbb24b35a03f382e560ca4b5fd17bcfe6e67c0f7.tar.bz2
Issue #6314: logging: Extra checks on the "level" argument in more places.
Diffstat (limited to 'Lib/logging/__init__.py')
-rw-r--r--Lib/logging/__init__.py23
1 files changed, 15 insertions, 8 deletions
diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py
index 23f7930..9e18c22 100644
--- a/Lib/logging/__init__.py
+++ b/Lib/logging/__init__.py
@@ -174,6 +174,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):
"""
@@ -1010,7 +1021,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 = []
@@ -1020,7 +1031,7 @@ class Logger(Filterer):
"""
Set the logging level of this logger.
"""
- self.level = level
+ self.level = _checkLevel(level)
def debug(self, msg, *args, **kwargs):
"""
@@ -1397,10 +1408,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)
#---------------------------------------------------------------------------