|
- # -*- coding: utf-8 -*-
- from __future__ import (absolute_import, division, print_function,
- unicode_literals)
-
- import logging
-
- from rq.utils import ColorizingStreamHandler
- from rq.defaults import (DEFAULT_LOGGING_FORMAT,
- DEFAULT_LOGGING_DATE_FORMAT)
-
-
- def setup_loghandlers(level=None, date_format=DEFAULT_LOGGING_DATE_FORMAT,
- log_format=DEFAULT_LOGGING_FORMAT):
- logger = logging.getLogger('rq.worker')
-
- if not _has_effective_handler(logger):
- formatter = logging.Formatter(fmt=log_format, datefmt=date_format)
- handler = ColorizingStreamHandler()
- handler.setFormatter(formatter)
- logger.addHandler(handler)
-
- if level is not None:
- logger.setLevel(level)
-
-
- 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
|