From ed52384a19ac607dd2e5c85943fe184c7c83f0f2 Mon Sep 17 00:00:00 2001 From: lufte Date: Fri, 17 Aug 2018 00:59:14 -0300 Subject: Perform attribute updates on a record's clone (cherry picked from commit 68b9dff74733278fb8095215db3bd5f00fa3aa50) --- qutebrowser/utils/log.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/qutebrowser/utils/log.py b/qutebrowser/utils/log.py index 48711614d..ef8aa2ae5 100644 --- a/qutebrowser/utils/log.py +++ b/qutebrowser/utils/log.py @@ -25,6 +25,7 @@ import html as pyhtml import logging import contextlib import collections +import copy import faulthandler import traceback import warnings @@ -637,17 +638,18 @@ class HTMLFormatter(logging.Formatter): self._colordict['reset'] = '' def format(self, record): - record.__dict__.update(self._colordict) - if record.levelname in self._log_colors: - color = self._log_colors[record.levelname] - record.log_color = self._colordict[color] + record_clone = copy.copy(record) + record_clone.__dict__.update(self._colordict) + if record_clone.levelname in self._log_colors: + color = self._log_colors[record_clone.levelname] + record_clone.log_color = self._colordict[color] else: - record.log_color = '' + record_clone.log_color = '' for field in ['msg', 'filename', 'funcName', 'levelname', 'module', 'name', 'pathname', 'processName', 'threadName']: - data = str(getattr(record, field)) - setattr(record, field, pyhtml.escape(data)) - msg = super().format(record) + data = str(getattr(record_clone, field)) + setattr(record_clone, field, pyhtml.escape(data)) + msg = super().format(record_clone) if not msg.endswith(self._colordict['reset']): msg += self._colordict['reset'] return msg -- cgit v1.2.3-54-g00ecf