| 
					
				 | 
			
			
				@@ -32,6 +32,8 @@ from celery.utils.term import colored 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 is_py3k = sys.version_info[0] == 3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+MP_LOG = os.environ.get('MP_LOG', False) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 class TaskFormatter(ColorFormatter): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -91,25 +93,35 @@ class Logging(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sender=None, loglevel=loglevel, logfile=logfile, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             format=format, colorize=colorize, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if not receivers: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             root = logging.getLogger() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if self.app.conf.CELERYD_HIJACK_ROOT_LOGGER: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 root.handlers = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for logger in filter(None, (root, get_multiprocessing_logger())): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                self.setup_handlers(logger, logfile, format, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                    colorize, **kwargs) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if loglevel: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    logger.setLevel(loglevel) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                signals.after_setup_logger.send( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    sender=None, logger=logger, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    loglevel=loglevel, logfile=logfile, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    format=format, colorize=colorize, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # Configure root logger 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            self._configure_logger( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                root, logfile, loglevel, format, colorize, **kwargs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # Configure the multiprocessing logger 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            self._configure_logger( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                get_multiprocessing_logger(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                logfile, loglevel if MP_LOG else logging.ERROR, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                format, colorize, **kwargs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            signals.after_setup_logger.send( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                sender=None, logger=root, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                loglevel=loglevel, logfile=logfile, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                format=format, colorize=colorize, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             # then setup the root task logger. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             self.setup_task_loggers(loglevel, logfile, colorize=colorize) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         # This is a hack for multiprocessing's fork+exec, so that 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         # logging before Process.run works. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         logfile_name = logfile if isinstance(logfile, basestring) else '' 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -120,6 +132,14 @@ class Logging(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return receivers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def _configure_logger(self, logger, logfile, loglevel, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          format, colorize, **kwargs): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if logger is not None: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            self.setup_handlers(logger, logfile, format, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                colorize, **kwargs) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if loglevel: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                logger.setLevel(loglevel) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def setup_task_loggers(self, loglevel=None, logfile=None, format=None, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            colorize=None, propagate=False, **kwargs): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         """Setup the task logger. 
			 |