From 1d3e8cfbe80f5ca1e29b3ab4146aaadb898d964a Mon Sep 17 00:00:00 2001 From: Leonardo Gama Date: Thu, 11 Aug 2022 13:05:25 -0300 Subject: [PATCH] Disable logging propagation, use current stderr as output (#541) 1. Propagation can create duplicate messages if the root logger has stdout/stderr handlers set (as observed in #540). 2. `StreamHandler()` uses the `sys.stderr` value as of the time of handler creation, `_StderrHandler()` always use the current value of `sys.stderr`. --- dill/logger.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dill/logger.py b/dill/logger.py index e4ac213f..d308cdc2 100644 --- a/dill/logger.py +++ b/dill/logger.py @@ -209,8 +209,9 @@ def format(self, record): return super().format(record) logger = logging.getLogger('dill') +logger.propagate = False adapter = TraceAdapter(logger) -stderr_handler = logging.StreamHandler() +stderr_handler = logging._StderrHandler() adapter.addHandler(stderr_handler) def trace(arg: Union[bool, TextIO, str, os.PathLike] = None, *, mode: str = 'a') -> NoReturn: