@@ -1459,22 +1459,28 @@ def basicConfig(**kwargs):
14591459 using sys.stdout or sys.stderr), whereas FileHandler closes its stream
14601460 when the handler is closed.
14611461 """
1462- if len (root .handlers ) == 0 :
1463- filename = kwargs .get ("filename" )
1464- if filename :
1465- mode = kwargs .get ("filemode" , 'a' )
1466- hdlr = FileHandler (filename , mode )
1467- else :
1468- stream = kwargs .get ("stream" )
1469- hdlr = StreamHandler (stream )
1470- fs = kwargs .get ("format" , BASIC_FORMAT )
1471- dfs = kwargs .get ("datefmt" , None )
1472- fmt = Formatter (fs , dfs )
1473- hdlr .setFormatter (fmt )
1474- root .addHandler (hdlr )
1475- level = kwargs .get ("level" )
1476- if level is not None :
1477- root .setLevel (level )
1462+ # Add thread safety in case someone mistakenly calls
1463+ # basicConfig() from multiple threads
1464+ _acquireLock ()
1465+ try :
1466+ if len (root .handlers ) == 0 :
1467+ filename = kwargs .get ("filename" )
1468+ if filename :
1469+ mode = kwargs .get ("filemode" , 'a' )
1470+ hdlr = FileHandler (filename , mode )
1471+ else :
1472+ stream = kwargs .get ("stream" )
1473+ hdlr = StreamHandler (stream )
1474+ fs = kwargs .get ("format" , BASIC_FORMAT )
1475+ dfs = kwargs .get ("datefmt" , None )
1476+ fmt = Formatter (fs , dfs )
1477+ hdlr .setFormatter (fmt )
1478+ root .addHandler (hdlr )
1479+ level = kwargs .get ("level" )
1480+ if level is not None :
1481+ root .setLevel (level )
1482+ finally :
1483+ _releaseLock ()
14781484
14791485#---------------------------------------------------------------------------
14801486# Utility functions at module level.
0 commit comments