2015-10-26 73 views
1

我正在用Flask和Celery構建一個應用程序,我正嘗試將我的應用程序日誌發送到Papertrail。這適用於我的常規(同步)應用程序日誌。配置是這樣的:芹菜記錄到Papertrail

import logging 
    from logging.handlers import SysLogHandler 
    import socket 


    class ContextFilter(logging.Filter): 
     hostname = socket.gethostname() 

     def filter(self, record): 
      record.hostname = ContextFilter.hostname 
      return True 


    f = ContextFilter() 
    logger = logging.getLogger() 
    logger.setLevel(logging.INFO) 
    logger.addFilter(f) 

    formatter = logging.Formatter(
     "%(asctime)s - %(name)s - %(levelname)s - %(message)s" 
    ) 
    syslog = SysLogHandler(address=('<myapp>.papertrailapp.com', <port>)) 
    syslog.setFormatter(formatter) 
    logger.addHandler(syslog) 

我已經嘗試添加該記錄儀芹菜的任務,但我看到的是在Papertrail SDOUT並沒有什麼產出。芹菜會做些什麼來解決正常的採伐流程?

我意識到芹菜有一個特定任務的記錄器,但我找不到有關如何配置芹菜的任何文檔。

回答

0

如果我正確讀取this,祕訣就是調用函數redirect_stdouts_to_logger將stdout發送到您的SysLogHandler實例。 Celery's docs有更多。