diff options
author | Richard van der Hoff <richard@matrix.org> | 2018-01-17 11:25:11 +0000 |
---|---|---|
committer | Richard van der Hoff <richard@matrix.org> | 2018-01-17 11:25:11 +0000 |
commit | 11ab2f56f513620d60f107fdfd5c0218cacacc7d (patch) | |
tree | 393f29b8faf5b5aeeae6a683c7fef8d78dfd1dc5 /synapse/util/logcontext.py | |
parent | Fix 'NoneType' object has no attribute 'writeHeaders' (diff) | |
parent | Merge pull request #2792 from matrix-org/rav/optimise_logging_context (diff) | |
download | synapse-11ab2f56f513620d60f107fdfd5c0218cacacc7d.tar.xz |
Merge branch 'develop' into rav/fix_closed_connection_errors
Diffstat (limited to 'synapse/util/logcontext.py')
-rw-r--r-- | synapse/util/logcontext.py | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/synapse/util/logcontext.py b/synapse/util/logcontext.py index 48c9f6802d..ca71a1fc27 100644 --- a/synapse/util/logcontext.py +++ b/synapse/util/logcontext.py @@ -52,13 +52,16 @@ except Exception: class LoggingContext(object): """Additional context for log formatting. Contexts are scoped within a "with" block. + Args: name (str): Name for the context for debugging. """ __slots__ = [ - "previous_context", "name", "usage_start", "usage_end", "main_thread", - "__dict__", "tag", "alive", + "previous_context", "name", "ru_stime", "ru_utime", + "db_txn_count", "db_txn_duration", "usage_start", "usage_end", + "main_thread", "alive", + "request", "tag", ] thread_local = threading.local() @@ -96,7 +99,9 @@ class LoggingContext(object): self.db_txn_count = 0 self.db_txn_duration = 0. self.usage_start = None + self.usage_end = None self.main_thread = threading.current_thread() + self.request = None self.tag = "" self.alive = True @@ -105,7 +110,11 @@ class LoggingContext(object): @classmethod def current_context(cls): - """Get the current logging context from thread local storage""" + """Get the current logging context from thread local storage + + Returns: + LoggingContext: the current logging context + """ return getattr(cls.thread_local, "current_context", cls.sentinel) @classmethod @@ -155,11 +164,13 @@ class LoggingContext(object): self.alive = False def copy_to(self, record): - """Copy fields from this context to the record""" - for key, value in self.__dict__.items(): - setattr(record, key, value) + """Copy logging fields from this context to a log record or + another LoggingContext + """ - record.ru_utime, record.ru_stime = self.get_resource_usage() + # 'request' is the only field we currently use in the logger, so that's + # all we need to copy + record.request = self.request def start(self): if threading.current_thread() is not self.main_thread: |