Django的 - 芹菜 - supervisord日志记录配置
问题描述:
我有芹菜任务(内运行)一个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.log和celery_worker_err.log存储所有日志的所有级别:INFO,WARNING,ERROR ...为什么?
如何我可以配置记录仪芹菜芹菜所有日志只重定向到标准输出,让supervisord存储级别信息只在celery_worker.log?
感谢
答
我想这是因为在默认情况下芹菜报告东西到stderr,而不是标准输出, 可以使用supervisord了redirect_stderr = true标志两个文件合并成一个没有什么帮助。
芹菜中有一个设置让我们指定一个日志文件,如果日志文件没有指定它使用stderr。