我有一个django项目,里面有一个芹菜任务(正在运行),但我对日志记录有一个问题,我所做的是:
任务日志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',
},
......
},
主管芹菜配置:
- [节目:芹菜]*command=/usr/local/bin/celeb-worker-A应用程序--autoscale=20,10-E-l INFO-Ofair
- directory=/xxx/celerydir
- numprocs=1
- stdout_logfile=/xxx/logs/celery_worker.log
- stderr_logfile=/xxx/logs/celery_worker_err.log
- autostart=true
- autorestart=真
- startsecs=10
- stopwaitsecs=600
- stopasgroup=true
- 优先级=998
我的问题是,正如你所看到的,在Django->celeni处理程序中,我指定了"stream":sys.stdout,但当我用supervisord启动celeni时,我会看到这两个日志存储所有级别的所有日志的celey_worker.log和celey_wworker_err.log:INFO、WARNING、ERROR。。。为什么?
我如何为芹菜配置记录器,使其仅将所有芹菜日志重定向到stdout,并让supervisord仅在cele_worker.log上存储级别信息
感谢
我认为这是因为默认情况下,芹菜会向stderr而不是stdout报告事情,如果有帮助的话,可以使用supervisorordredirectsderr=true标志将两个文件合并为一个文件。
芹菜中有一个设置,让您指定一个日志文件,如果没有指定日志文件,它将使用stderr。