瀏覽代碼

celeryd: Re-enable redirect_stdouts_to_logger()

Ask Solem 15 年之前
父節點
當前提交
0776a110d2
共有 2 個文件被更改,包括 13 次插入3 次删除
  1. 11 2
      celery/bin/celeryd.py
  2. 2 1
      celery/log.py

+ 11 - 2
celery/bin/celeryd.py

@@ -190,11 +190,12 @@ class Worker(object):
             self.loglevel = conf.LOG_LEVELS[self.loglevel.upper()]
 
     def run(self):
+        self.init_loader()
+        self.init_queues()
+        self.redirect_stdouts_to_logger()
         print("celery@%s v%s is starting." % (self.hostname,
                                               celery.__version__))
 
-        self.init_loader()
-        self.init_queues()
 
         if conf.RESULT_BACKEND == "database" \
                 and self.settings.DATABASE_ENGINE == "sqlite3" and \
@@ -237,6 +238,14 @@ class Worker(object):
             raise ImproperlyConfigured(
                     "Celery needs to be configured to run celeryd.")
 
+    def redirect_stdouts_to_logger(self):
+        from celery import log
+        # Redirect stdout/stderr to our logger.
+        logger = log.setup_logger(loglevel=self.loglevel,
+                                  logfile=self.logfile)
+        log.redirect_stdouts_to_logger(logger, loglevel=logging.WARNING)
+
+
     def purge_messages(self):
         discarded_count = discard_all()
         what = discarded_count > 1 and "messages" or "message"

+ 2 - 1
celery/log.py

@@ -207,7 +207,8 @@ class LoggingProxy(object):
 
     def write(self, data):
         """Write message to logging object."""
-        if not self.closed:
+        data = data.strip()
+        if data and not self.closed:
             self.logger.log(self.loglevel, data)
 
     def writelines(self, sequence):