2015-03-31 52 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。