@@ -1459,9 +1459,6 @@ def _clear_cache(self):
14591459# Logger classes and functions
14601460#---------------------------------------------------------------------------
14611461
1462- _tls = threading .local ()
1463- _tls .in_progress = False
1464-
14651462class Logger (Filterer ):
14661463 """
14671464 Instances of the Logger class represent a single logging channel. A
@@ -1477,6 +1474,8 @@ class Logger(Filterer):
14771474 level, and "input.csv", "input.xls" and "input.gnu" for the sub-levels.
14781475 There is no arbitrary limit to the depth of nesting.
14791476 """
1477+ _tls = threading .local ()
1478+
14801479 def __init__ (self , name , level = NOTSET ):
14811480 """
14821481 Initialize the logger with a name and an optional level.
@@ -1676,7 +1675,7 @@ def handle(self, record):
16761675 if self ._is_disabled ():
16771676 return
16781677
1679- _tls .in_progress = True
1678+ self . _tls .in_progress = True
16801679 try :
16811680 maybe_record = self .filter (record )
16821681 if not maybe_record :
@@ -1685,7 +1684,7 @@ def handle(self, record):
16851684 record = maybe_record
16861685 self .callHandlers (record )
16871686 finally :
1688- _tls .in_progress = False
1687+ self . _tls .in_progress = False
16891688
16901689 def addHandler (self , hdlr ):
16911690 """
@@ -1824,7 +1823,9 @@ def _hierlevel(logger):
18241823 _hierlevel (item ) == 1 + _hierlevel (item .parent ))
18251824
18261825 def _is_disabled (self ):
1827- return self .disabled or getattr (_tls , 'in_progress' , False )
1826+ # We need to use getattr as it will only be set the first time a log
1827+ # message is recorded on any given thread
1828+ return self .disabled or getattr (self ._tls , 'in_progress' , False )
18281829
18291830 def __repr__ (self ):
18301831 level = getLevelName (self .getEffectiveLevel ())
0 commit comments