Python Celery - 忽略日志级别信息的工作人员
Posted
技术标签:
【中文标题】Python Celery - 忽略日志级别信息的工作人员【英文标题】:Python Celery - Worker ignoring loglevel INFO 【发布时间】:2013-12-28 02:15:20 【问题描述】:我正在使用以下命令:
celery worker -l info -A django_app --concurrency=10 --autoreload
但 DEBUG 日志仍在涌出,使用 -l warning
和 --logfile
时也是如此
知道为什么 Celery 会忽略日志设置吗?
更多细节:
日志来自Python
库suds
,它使用DEBUG 输出到记录器。
【问题讨论】:
Django Celery Logging Best Practice的可能重复 【参考方案1】:尝试使用CELERYD_HIJACK_ROOT_LOGGER setting:
celery_instance = Celery('django_app')
celery_instance.add_defaults(
'CELERYD_HIJACK_ROOT_LOGGER': False,
)
【讨论】:
【参考方案2】:我遇到了同样的问题,我决定在settings.py
中调整日志级别:
LOGGING['loggers']['celery'] =
'handlers': ['console', <etc>],
'level': <LEVEL_YOU_WANT>,
'propagate': True,
另外我决定禁用一些“不感兴趣”的日志:
LOGGING['loggers']['celery.redirected'] =
'handlers': ['console', <etc>],
'level': <LEVEL_YOU_WANT>,
'propagate': False,
for i in ['worker', 'concurrency', 'beat']:
LOGGING['loggers']['celery.' + i] =
'handlers': [],
'level': 'WARNING',
'propagate': True,
for i in ['job', 'consumer', 'mediator', 'control', 'bootsteps']:
LOGGING['loggers']['celery.worker.' + i] =
'handlers': [],
'level': 'WARNING',
'propagate': True,
这样做只会让您看到来自您的任务的日志,而不是 Celery 的“机器”。
【讨论】:
以上是关于Python Celery - 忽略日志级别信息的工作人员的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 python 日志框架在带有回溯的警告或信息级别记录异常?