@@ -1475,8 +1475,6 @@ class Logger(Filterer):
14751475 level, and "input.csv", "input.xls" and "input.gnu" for the sub-levels.
14761476 There is no arbitrary limit to the depth of nesting.
14771477 """
1478- _tls = threading .local ()
1479-
14801478 def __init__ (self , name , level = NOTSET ):
14811479 """
14821480 Initialize the logger with a name and an optional level.
@@ -1673,19 +1671,14 @@ def handle(self, record):
16731671 This method is used for unpickled records received from a socket, as
16741672 well as those created locally. Logger-level filtering is applied.
16751673 """
1676- if self ._is_disabled () :
1674+ if self .disabled :
16771675 return
1678-
1679- self ._tls .in_progress = True
1680- try :
1681- maybe_record = self .filter (record )
1682- if not maybe_record :
1683- return
1684- if isinstance (maybe_record , LogRecord ):
1685- record = maybe_record
1686- self .callHandlers (record )
1687- finally :
1688- self ._tls .in_progress = False
1676+ maybe_record = self .filter (record )
1677+ if not maybe_record :
1678+ return
1679+ if isinstance (maybe_record , LogRecord ):
1680+ record = maybe_record
1681+ self .callHandlers (record )
16891682
16901683 def addHandler (self , hdlr ):
16911684 """
@@ -1773,7 +1766,7 @@ def isEnabledFor(self, level):
17731766 """
17741767 Is this logger enabled for level 'level'?
17751768 """
1776- if self ._is_disabled () :
1769+ if self .disabled :
17771770 return False
17781771
17791772 try :
@@ -1823,11 +1816,6 @@ def _hierlevel(logger):
18231816 if isinstance (item , Logger ) and item .parent is self and
18241817 _hierlevel (item ) == 1 + _hierlevel (item .parent ))
18251818
1826- def _is_disabled (self ):
1827- # We need to use getattr as it will only be set the first time a log
1828- # message is recorded on any given thread
1829- return self .disabled or getattr (self ._tls , 'in_progress' , False )
1830-
18311819 def __repr__ (self ):
18321820 level = getLevelName (self .getEffectiveLevel ())
18331821 return '<%s %s (%s)>' % (self .__class__ .__name__ , self .name , level )
@@ -1864,9 +1852,9 @@ class LoggerAdapter(object):
18641852
18651853 def __init__ (self , logger , extra = None , merge_extra = False ):
18661854 """
1867- Initialize the adapter with a logger and a dict-like object which
1868- provides contextual information. This constructor signature allows
1869- easy stacking of LoggerAdapters, if so desired.
1855+ Initialize the adapter with a logger and an optional dict-like object
1856+ which provides contextual information. This constructor signature
1857+ allows easy stacking of LoggerAdapters, if so desired.
18701858
18711859 You can effectively pass keyword arguments as shown in the
18721860 following example:
@@ -1897,8 +1885,9 @@ def process(self, msg, kwargs):
18971885 Normally, you'll only need to override this one method in a
18981886 LoggerAdapter subclass for your specific needs.
18991887 """
1900- if self .merge_extra and "extra" in kwargs :
1901- kwargs ["extra" ] = {** self .extra , ** kwargs ["extra" ]}
1888+ if self .merge_extra and kwargs .get ("extra" ) is not None :
1889+ if self .extra is not None :
1890+ kwargs ["extra" ] = {** self .extra , ** kwargs ["extra" ]}
19021891 else :
19031892 kwargs ["extra" ] = self .extra
19041893 return msg , kwargs
0 commit comments