2015-03-31 53 views
0

我有芹菜任務(內運行)一個Django項目,但我有一個關於伐木的問題,我做了什麼是:Django的 - 芹菜 - supervisord日誌記錄配置

任務日誌get_task_logger:

from celery.utils.log import get_task_logger 
logger = get_task_logger('celery') 

Django的日誌記錄:

LOGGING = { 
'version': 1, 
'disable_existing_loggers': False, 
'root': { 
    'level': 'DEBUG', 
    'handlers': ['sentry', 'file'], 
}, 
'formatters': { 
    'verbose': { 
     'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s' 
    }, 
}, 
'handlers': { 
    'console': { 
     'level': 'DEBUG', 
     'class': 'logging.StreamHandler', 
     'formatter': 'verbose', 
    }, 
    'celery': { 
     'level': 'INFO', 
     'class': 'logging.StreamHandler', 
     'stream': sys.stdout, 
    }, 
........ 
}, 
'loggers': { 
    'celery': { 
     'handlers': ['celery'], 
     'level': 'INFO', 
    }, 
...... 
}, 

supervisord芹菜配置:

  • [方案:芹菜] *命令=的/ usr/local/bin中/芹菜工人-A應用--autoscale = 20,10 -E -l INFO -Ofair
  • 目錄=/XXX/celerydir
  • numprocs = 1
  • stdout_logfile =/XXX /日誌/ celery_worker.log
  • stderr_logfile =/XXX /日誌/ celery_worker_err.log
  • 自動啓動=真
  • 自動重啓=真
  • startsecs = 10個
  • stopwaitsecs = 600
  • stopasgroup =真
  • 優先級= 998

我的問題是,你可以看到,裏面的Django - >芹菜處理我」已經指定「'流':sys.stdout」,但是當我啓動與supervisord芹菜我會看到兩個日誌 celery_worker.logcelery_worker_err.log存儲所有日誌的所有級別:INFO,WARNING,ERROR ...爲什麼?

如何我可以配置記錄儀芹菜芹菜所有日誌只重定向到標準輸出,讓supervisord存儲級別信息只在celery_worker.log

感謝

回答

3

我想這是因爲在默認情況下芹菜報告東西到stderr,而不是標準輸出, 可以使用supervisord了redirect_stderr = true標誌兩個文件合併成一個沒有什麼幫助。

芹菜中有一個設置讓我們指定一個日誌文件,如果日誌文件沒有指定它使用stderr。