diff options
author | Manjusaka <lizheao940510@gmail.com> | 2019-01-23 15:08:38 +0800 |
---|---|---|
committer | Vinay Sajip <vinay_sajip@yahoo.co.uk> | 2019-01-23 07:08:38 +0000 |
commit | da6424e96ada72c15c91bddb0a411acf7119e10a (patch) | |
tree | 6df2b6b98cea072572a2adc3726345e2f0f23445 /Lib/logging | |
parent | 6d43f6f081023b680d9db4542d19b9e382149f0a (diff) | |
download | cpython-git-da6424e96ada72c15c91bddb0a411acf7119e10a.tar.gz |
bpo-35726: Prevented QueueHandler formatting from affecting other handlers (GH-11537)
QueueHandler.prepare() now makes a copy of the record before modifying and enqueueing it, to avoid affecting other handlers in the chain.
Diffstat (limited to 'Lib/logging')
-rw-r--r-- | Lib/logging/handlers.py | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/Lib/logging/handlers.py b/Lib/logging/handlers.py index e213e438c3..3727bf0677 100644 --- a/Lib/logging/handlers.py +++ b/Lib/logging/handlers.py @@ -27,6 +27,7 @@ import logging, socket, os, pickle, struct, time, re from stat import ST_DEV, ST_INO, ST_MTIME import queue import threading +import copy # # Some constants... @@ -1377,6 +1378,8 @@ class QueueHandler(logging.Handler): # exc_info and exc_text attributes, as they are no longer # needed and, if not None, will typically not be pickleable. msg = self.format(record) + # bpo-35726: make copy of record to avoid affecting other handlers in the chain. + record = copy.copy(record) record.message = msg record.msg = msg record.args = None |