From fe122ac7993b972ff2230fe4987a0a23b4c43e79 Mon Sep 17 00:00:00 2001 From: Michal Bultrowicz Date: Sun, 10 Jan 2016 02:10:53 +0100 Subject: [PATCH] Worker only creates log handlers if there aren't any. --- rq/logutils.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/rq/logutils.py b/rq/logutils.py index 2a23ae2a..224a84e1 100644 --- a/rq/logutils.py +++ b/rq/logutils.py @@ -16,10 +16,25 @@ from rq.utils import ColorizingStreamHandler def setup_loghandlers(level='INFO'): logger = logging.getLogger('rq.worker') - if not logger.handlers: + if not _has_effective_handler(logger): logger.setLevel(level) formatter = logging.Formatter(fmt='%(asctime)s %(message)s', datefmt='%H:%M:%S') handler = ColorizingStreamHandler() handler.setFormatter(formatter) logger.addHandler(handler) + + +def _has_effective_handler(logger): + """ + Checks if a logger has a handler that will catch its messages in its logger hierarchy. + :param `logging.Logger` logger: The logger to be checked. + :return: True if a handler is found for the logger, False otherwise. + :rtype: bool + """ + while True: + if logger.handlers: + return True + if not logger.parent: + return False + logger = logger.parent