@@ -176,6 +176,17 @@ def addLevelName(level, levelName):
176176 finally :
177177 _releaseLock ()
178178
179+ def _checkLevel (level ):
180+ if isinstance (level , int ):
181+ rv = level
182+ elif str (level ) == level :
183+ if level not in _levelNames :
184+ raise ValueError ("Unknown level: %r" % level )
185+ rv = _levelNames [level ]
186+ else :
187+ raise TypeError ("Level not an integer or a valid string: %r" % level )
188+ return rv
189+
179190#---------------------------------------------------------------------------
180191# Thread-related stuff
181192#---------------------------------------------------------------------------
@@ -593,7 +604,7 @@ def __init__(self, level=NOTSET):
593604 and the filter list to empty.
594605 """
595606 Filterer .__init__ (self )
596- self .level = level
607+ self .level = _checkLevel ( level )
597608 self .formatter = None
598609 #get the module data lock, as we're updating a shared structure.
599610 _acquireLock ()
@@ -631,7 +642,7 @@ def setLevel(self, level):
631642 """
632643 Set the logging level of this handler.
633644 """
634- self .level = level
645+ self .level = _checkLevel ( level )
635646
636647 def format (self , record ):
637648 """
@@ -1009,7 +1020,7 @@ def __init__(self, name, level=NOTSET):
10091020 """
10101021 Filterer .__init__ (self )
10111022 self .name = name
1012- self .level = level
1023+ self .level = _checkLevel ( level )
10131024 self .parent = None
10141025 self .propagate = 1
10151026 self .handlers = []
@@ -1019,7 +1030,7 @@ def setLevel(self, level):
10191030 """
10201031 Set the logging level of this logger.
10211032 """
1022- self .level = level
1033+ self .level = _checkLevel ( level )
10231034
10241035 def debug (self , msg , * args , ** kwargs ):
10251036 """
@@ -1396,10 +1407,6 @@ def basicConfig(**kwargs):
13961407 root .addHandler (hdlr )
13971408 level = kwargs .get ("level" )
13981409 if level is not None :
1399- if str (level ) == level : # If a string was passed, do more checks
1400- if level not in _levelNames :
1401- raise ValueError ("Unknown level: %r" % level )
1402- level = _levelNames [level ]
14031410 root .setLevel (level )
14041411
14051412#---------------------------------------------------------------------------
0 commit comments