Reload logger config on SIGHUP

Particularly useful for logrotate.
This commit is contained in:
Élie Bouttier 2014-07-28 12:07:55 -07:00
parent a5c5f2494f
commit ab04e38dc8

View File

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