Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 2314fc7

Browse files
committed
logging: Added threading interlock in basicConfig().
1 parent c793779 commit 2314fc7

1 file changed

Lines changed: 22 additions & 16 deletions

File tree

Lib/logging/__init__.py

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)