From 62267f3d73a962da46a5bae8a3ca813af06ce095 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Thu, 24 Oct 2019 16:16:21 +0200 Subject: [PATCH 06/11] base: add context method to ProxyLogger (#35818) It copies the logger and add contextual informations to the extra dictionnary, it overwrites keys from previous calls to context. --- passerelle/base/models.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/passerelle/base/models.py b/passerelle/base/models.py index 5a9b3db5..3758dc8e 100644 --- a/passerelle/base/models.py +++ b/passerelle/base/models.py @@ -755,6 +755,7 @@ class ResourceStatus(models.Model): class ProxyLogger(object): + extra = None def __init__(self, connector): self.connector = connector @@ -764,6 +765,11 @@ class ProxyLogger(object): self._logger = logging.getLogger(logger_name) self._logger.setLevel(connector.log_level) + def context(self, **kwargs): + proxy_logger_copy = copy.copy(self) + proxy_logger_copy.extra = dict(self.extra or {}, **kwargs) + return proxy_logger_copy + @property def level(self): return self._logger.getEffectiveLevel() @@ -805,7 +811,8 @@ class ProxyLogger(object): attr['appname'] = self.appname attr['slug'] = self.slug - extra = kwargs.get('extra', {}) + extra = self.extra or {} + extra.update(kwargs.get('extra', {})) request = extra.get('request') def is_json_serializable(value): -- 2.23.0