summary refs log tree commit diff
path: root/synapse/config
diff options
context:
space:
mode:
authorMark Haines <mjark@negativecurvature.net>2016-12-30 12:52:50 +0000
committerGitHub <noreply@github.com>2016-12-30 12:52:50 +0000
commit0eac4fa5257c7c4df1fdddfb7d7859a2081b70bd (patch)
tree9ef0ee2533850939045f0255f9a95e23596f8fbb /synapse/config
parentBump changelog and version (diff)
parentUse the new twisted logging framework. (diff)
downloadsynapse-0eac4fa5257c7c4df1fdddfb7d7859a2081b70bd.tar.xz
Merge pull request #1731 from matrix-org/markjh/logging-memleak
Use the new twisted logging framework.
Diffstat (limited to 'synapse/config')
-rw-r--r--synapse/config/logger.py16
1 files changed, 13 insertions, 3 deletions
diff --git a/synapse/config/logger.py b/synapse/config/logger.py
index ec72c95436..63e69a7e0c 100644
--- a/synapse/config/logger.py
+++ b/synapse/config/logger.py
@@ -15,7 +15,7 @@
 
 from ._base import Config
 from synapse.util.logcontext import LoggingContextFilter
-from twisted.python.log import PythonLoggingObserver
+from twisted.logger import globalLogBeginner, STDLibLogObserver
 import logging
 import logging.config
 import yaml
@@ -180,5 +180,15 @@ def setup_logging(log_config=None, log_file=None, verbosity=None):
         with open(log_config, 'r') as f:
             logging.config.dictConfig(yaml.load(f))
 
-    observer = PythonLoggingObserver()
-    observer.start()
+    # It's critical to point twisted's internal logging somewhere, otherwise it
+    # stacks up and leaks kup to 64K object;
+    # see: https://twistedmatrix.com/trac/ticket/8164
+    #
+    # Routing to the python logging framework could be a performance problem if
+    # the handlers blocked for a long time as python.logging is a blocking API
+    # see https://twistedmatrix.com/documents/current/core/howto/logger.html
+    # filed as https://github.com/matrix-org/synapse/issues/1727
+    #
+    # However this may not be too much of a problem if we are just writing to a file.
+    observer = STDLibLogObserver()
+    globalLogBeginner.beginLoggingTo([observer])