|  | @@ -61,8 +61,10 @@ class Logging(object):
 | 
											
												
													
														|  |          self.colorize = self.app.conf.CELERYD_LOG_COLOR
 |  |          self.colorize = self.app.conf.CELERYD_LOG_COLOR
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      def setup(self, loglevel=None, logfile=None, redirect_stdouts=False,
 |  |      def setup(self, loglevel=None, logfile=None, redirect_stdouts=False,
 | 
											
												
													
														|  | -            redirect_level='WARNING'):
 |  | 
 | 
											
												
													
														|  | -        handled = self.setup_logging_subsystem(loglevel, logfile)
 |  | 
 | 
											
												
													
														|  | 
 |  | +            redirect_level='WARNING', colorize=None):
 | 
											
												
													
														|  | 
 |  | +        handled = self.setup_logging_subsystem(
 | 
											
												
													
														|  | 
 |  | +            loglevel, logfile, colorize=colorize,
 | 
											
												
													
														|  | 
 |  | +        )
 | 
											
												
													
														|  |          if not handled:
 |  |          if not handled:
 | 
											
												
													
														|  |              logger = get_logger('celery.redirected')
 |  |              logger = get_logger('celery.redirected')
 | 
											
												
													
														|  |              if redirect_stdouts:
 |  |              if redirect_stdouts:
 | 
											
										
											
												
													
														|  | @@ -81,8 +83,7 @@ class Logging(object):
 | 
											
												
													
														|  |          Logging._setup = True
 |  |          Logging._setup = True
 | 
											
												
													
														|  |          loglevel = mlevel(loglevel or self.loglevel)
 |  |          loglevel = mlevel(loglevel or self.loglevel)
 | 
											
												
													
														|  |          format = format or self.format
 |  |          format = format or self.format
 | 
											
												
													
														|  | -        if colorize is None:
 |  | 
 | 
											
												
													
														|  | -            colorize = self.supports_color(logfile)
 |  | 
 | 
											
												
													
														|  | 
 |  | +        colorize = self.supports_color(colorize, logfile)
 | 
											
												
													
														|  |          reset_multiprocessing_logger()
 |  |          reset_multiprocessing_logger()
 | 
											
												
													
														|  |          if not is_py3k:
 |  |          if not is_py3k:
 | 
											
												
													
														|  |              ensure_process_aware_logger()
 |  |              ensure_process_aware_logger()
 | 
											
										
											
												
													
														|  | @@ -126,8 +127,7 @@ class Logging(object):
 | 
											
												
													
														|  |          """
 |  |          """
 | 
											
												
													
														|  |          loglevel = mlevel(loglevel or self.loglevel)
 |  |          loglevel = mlevel(loglevel or self.loglevel)
 | 
											
												
													
														|  |          format = format or self.task_format
 |  |          format = format or self.task_format
 | 
											
												
													
														|  | -        if colorize is None:
 |  | 
 | 
											
												
													
														|  | -            colorize = self.supports_color(logfile)
 |  | 
 | 
											
												
													
														|  | 
 |  | +        colorize = self.supports_color(colorize, logfile)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          logger = self.setup_handlers(get_logger('celery.task'),
 |  |          logger = self.setup_handlers(get_logger('celery.task'),
 | 
											
												
													
														|  |                                       logfile, format, colorize,
 |  |                                       logfile, format, colorize,
 | 
											
										
											
												
													
														|  | @@ -156,24 +156,24 @@ class Logging(object):
 | 
											
												
													
														|  |              sys.stderr = proxy
 |  |              sys.stderr = proxy
 | 
											
												
													
														|  |          return proxy
 |  |          return proxy
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    def supports_color(self, logfile=None):
 |  | 
 | 
											
												
													
														|  | 
 |  | +    def supports_color(self, colorize=None, logfile=None):
 | 
											
												
													
														|  | 
 |  | +        colorize = self.colorize if colorize is None else colorize
 | 
											
												
													
														|  |          if self.app.IS_WINDOWS:
 |  |          if self.app.IS_WINDOWS:
 | 
											
												
													
														|  |              # Windows does not support ANSI color codes.
 |  |              # Windows does not support ANSI color codes.
 | 
											
												
													
														|  |              return False
 |  |              return False
 | 
											
												
													
														|  | -        if self.colorize is None:
 |  | 
 | 
											
												
													
														|  | 
 |  | +        if colorize or colorize is None:
 | 
											
												
													
														|  |              # Only use color if there is no active log file
 |  |              # Only use color if there is no active log file
 | 
											
												
													
														|  |              # and stderr is an actual terminal.
 |  |              # and stderr is an actual terminal.
 | 
											
												
													
														|  |              return logfile is None and isatty(sys.stderr)
 |  |              return logfile is None and isatty(sys.stderr)
 | 
											
												
													
														|  | -        return self.colorize
 |  | 
 | 
											
												
													
														|  | 
 |  | +        return colorize
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    def colored(self, logfile=None):
 |  | 
 | 
											
												
													
														|  | -        return colored(enabled=self.supports_color(logfile))
 |  | 
 | 
											
												
													
														|  | 
 |  | +    def colored(self, logfile=None, enabled=None):
 | 
											
												
													
														|  | 
 |  | +        return colored(enabled=self.supports_color(enabled, logfile))
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      def setup_handlers(self, logger, logfile, format, colorize,
 |  |      def setup_handlers(self, logger, logfile, format, colorize,
 | 
											
												
													
														|  |              formatter=ColorFormatter, **kwargs):
 |  |              formatter=ColorFormatter, **kwargs):
 | 
											
												
													
														|  |          if self._is_configured(logger):
 |  |          if self._is_configured(logger):
 | 
											
												
													
														|  |              return logger
 |  |              return logger
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  |          handler = self._detect_handler(logfile)
 |  |          handler = self._detect_handler(logfile)
 | 
											
												
													
														|  |          handler.setFormatter(formatter(format, use_color=colorize))
 |  |          handler.setFormatter(formatter(format, use_color=colorize))
 | 
											
												
													
														|  |          logger.addHandler(handler)
 |  |          logger.addHandler(handler)
 |