|
@@ -24,7 +24,7 @@ from kombu.utils.encoding import set_default_encoding_file
|
|
|
from celery import signals
|
|
|
from celery._state import get_current_task
|
|
|
from celery.five import class_property, string_t
|
|
|
-from celery.utils import isatty
|
|
|
+from celery.utils import isatty, node_format
|
|
|
from celery.utils.log import (
|
|
|
get_logger, mlevel,
|
|
|
ColorFormatter, ensure_process_aware_logger,
|
|
@@ -65,9 +65,9 @@ class Logging(object):
|
|
|
self.colorize = self.app.conf.CELERYD_LOG_COLOR
|
|
|
|
|
|
def setup(self, loglevel=None, logfile=None, redirect_stdouts=False,
|
|
|
- redirect_level='WARNING', colorize=None):
|
|
|
+ redirect_level='WARNING', colorize=None, hostname=None):
|
|
|
handled = self.setup_logging_subsystem(
|
|
|
- loglevel, logfile, colorize=colorize,
|
|
|
+ loglevel, logfile, colorize=colorize, hostname=hostname,
|
|
|
)
|
|
|
if not handled:
|
|
|
if redirect_stdouts:
|
|
@@ -87,10 +87,12 @@ class Logging(object):
|
|
|
CELERY_LOG_REDIRECT_LEVEL=str(loglevel or ''),
|
|
|
)
|
|
|
|
|
|
- def setup_logging_subsystem(self, loglevel=None, logfile=None,
|
|
|
- format=None, colorize=None, **kwargs):
|
|
|
+ def setup_logging_subsystem(self, loglevel=None, logfile=None, format=None,
|
|
|
+ colorize=None, hostname=None, **kwargs):
|
|
|
if self.already_setup:
|
|
|
return
|
|
|
+ if logfile and hostname:
|
|
|
+ logfile = node_format(logfile, hostname)
|
|
|
self.already_setup = True
|
|
|
loglevel = mlevel(loglevel or self.loglevel)
|
|
|
format = format or self.format
|
|
@@ -107,6 +109,9 @@ class Logging(object):
|
|
|
|
|
|
if self.app.conf.CELERYD_HIJACK_ROOT_LOGGER:
|
|
|
root.handlers = []
|
|
|
+ get_logger('celery').handlers = []
|
|
|
+ get_logger('celery.task').handlers = []
|
|
|
+ get_logger('celery.redirected').handlers = []
|
|
|
|
|
|
# Configure root logger
|
|
|
self._configure_logger(
|
|
@@ -228,8 +233,8 @@ class Logging(object):
|
|
|
return WatchedFileHandler(logfile)
|
|
|
|
|
|
def _has_handler(self, logger):
|
|
|
- return (logger.handlers and
|
|
|
- not isinstance(logger.handlers[0], NullHandler))
|
|
|
+ if logger.handlers:
|
|
|
+ return any(not isinstance(h, NullHandler) for h in logger.handlers)
|
|
|
|
|
|
def _is_configured(self, logger):
|
|
|
return self._has_handler(logger) and not getattr(
|