|
|
|
@ -21,6 +21,7 @@ import logging.config |
|
|
|
|
import yaml |
|
|
|
|
from string import Template |
|
|
|
|
import os |
|
|
|
|
import signal |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DEFAULT_LOG_CONFIG = Template(""" |
|
|
|
@ -142,6 +143,19 @@ class LoggingConfig(Config): |
|
|
|
|
handler = logging.handlers.RotatingFileHandler( |
|
|
|
|
self.log_file, maxBytes=(1000 * 1000 * 100), backupCount=3 |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
def sighup(signum, stack): |
|
|
|
|
logger.info("Closing log file due to SIGHUP") |
|
|
|
|
handler.doRollover() |
|
|
|
|
logger.info("Opened new log file due to SIGHUP") |
|
|
|
|
|
|
|
|
|
# TODO(paul): obviously this is a terrible mechanism for |
|
|
|
|
# stealing SIGHUP, because it means no other part of synapse |
|
|
|
|
# can use it instead. If we want to catch SIGHUP anywhere |
|
|
|
|
# else as well, I'd suggest we find a nicer way to broadcast |
|
|
|
|
# it around. |
|
|
|
|
if getattr(signal, "SIGHUP"): |
|
|
|
|
signal.signal(signal.SIGHUP, sighup) |
|
|
|
|
else: |
|
|
|
|
handler = logging.StreamHandler() |
|
|
|
|
handler.setFormatter(formatter) |
|
|
|
|