Commit d1da5365 authored by Vinay Sajip's avatar Vinay Sajip

logging: Added threading interlock in basicConfig().

parent 7cbaf55a
...@@ -1459,22 +1459,28 @@ def basicConfig(**kwargs): ...@@ -1459,22 +1459,28 @@ def basicConfig(**kwargs):
using sys.stdout or sys.stderr), whereas FileHandler closes its stream using sys.stdout or sys.stderr), whereas FileHandler closes its stream
when the handler is closed. when the handler is closed.
""" """
if len(root.handlers) == 0: # Add thread safety in case someone mistakenly calls
filename = kwargs.get("filename") # basicConfig() from multiple threads
if filename: _acquireLock()
mode = kwargs.get("filemode", 'a') try:
hdlr = FileHandler(filename, mode) if len(root.handlers) == 0:
else: filename = kwargs.get("filename")
stream = kwargs.get("stream") if filename:
hdlr = StreamHandler(stream) mode = kwargs.get("filemode", 'a')
fs = kwargs.get("format", BASIC_FORMAT) hdlr = FileHandler(filename, mode)
dfs = kwargs.get("datefmt", None) else:
fmt = Formatter(fs, dfs) stream = kwargs.get("stream")
hdlr.setFormatter(fmt) hdlr = StreamHandler(stream)
root.addHandler(hdlr) fs = kwargs.get("format", BASIC_FORMAT)
level = kwargs.get("level") dfs = kwargs.get("datefmt", None)
if level is not None: fmt = Formatter(fs, dfs)
root.setLevel(level) hdlr.setFormatter(fmt)
root.addHandler(hdlr)
level = kwargs.get("level")
if level is not None:
root.setLevel(level)
finally:
_releaseLock()
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Utility functions at module level. # Utility functions at module level.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment