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 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)