Ver código fonte

Merge pull request #191 from bouttier/reload-logger-config

Reload logger config on SIGHUP
Guillaume Ayoub 11 anos atrás
pai
commit
33bee79f73
1 arquivos alterados com 14 adições e 5 exclusões
  1. 14 5
      radicale/log.py

+ 14 - 5
radicale/log.py

@@ -28,6 +28,7 @@ import os
 import sys
 import logging
 import logging.config
+import signal
 
 from . import config
 
@@ -35,6 +36,14 @@ from . import config
 LOGGER = logging.getLogger()
 
 
+def configure_from_file(filename, debug):
+    logging.config.fileConfig(filename)
+    if debug:
+        LOGGER.setLevel(logging.DEBUG)
+        for handler in LOGGER.handlers:
+            handler.setLevel(logging.DEBUG)
+
+
 def start():
     """Start the logging according to the configuration."""
     filename = os.path.expanduser(config.get("logging", "config"))
@@ -42,11 +51,11 @@ def start():
 
     if os.path.exists(filename):
         # Configuration taken from file
-        logging.config.fileConfig(filename)
-        if debug:
-            LOGGER.setLevel(logging.DEBUG)
-            for handler in LOGGER.handlers:
-                handler.setLevel(logging.DEBUG)
+        configure_from_file(filename, debug)
+        # Reload config on SIGHUP
+        def handler(signum, frame):
+            configure_from_file(filename, debug)
+        signal.signal(signal.SIGHUP, handler)
     else:
         # Default configuration, standard output
         handler = logging.StreamHandler(sys.stdout)