Celery Python 日志记录配置仅从指定模块记录 DEBUG
Posted
技术标签:
【中文标题】Celery Python 日志记录配置仅从指定模块记录 DEBUG【英文标题】:Celery Python logging config to log DEBUG only from specified modules 【发布时间】:2013-05-21 13:19:31 【问题描述】:我正在尝试让 django celery 记录(到控制台)来自我的模块(而不是库的模块)的 DEBUG(和更高级别)事件。所以从 celeryd 开始:
python hack/manage.py celeryd -E -l DEBUG -c 2
将意味着所有 DEBUG 事件都传递给控制台(这是我的根记录器上的处理程序)。我想修改这种行为,以便:
来自 mymodule(和子模块)的 DEBUG 事件转到控制台 来自所有其他模块的 DEBUG 事件将被忽略(例如:转到 Null 处理程序) 所有其他事件都正常处理(例如:ERROR 继续转到邮件处理程序)最好的方法是什么?
【问题讨论】:
【参考方案1】:我对此感到困惑,没有单一的“最佳”方法可以做到这一点。记住几件事很重要。
Celery 作为单独的可执行文件在生产环境中运行。这似乎很明显,但这意味着与其他东西(如 django)共享日志文件不会很好地工作(见CELERYD_HIJACK_ROOT_LOGGER)所以不要这样做.. 在生产环境和开发环境中保持以相似的方式运行非常重要,因此当您转向生产环境时,事情不会出错(请参阅 CELERY_ALWAYS_EAGER 并使用它) 如果您使用设置,从 manage.py 运行 Celery 将引用您的settings.py
文件进行配置
考虑到这一点,我建议您设置日志记录以满足您的需求。首先确保您正确设置了模块的日志记录级别。请参阅我的other post,了解如何设置日志记录。这是满足您需求的精简版
LOGGING =
'version': 1,
'disable_existing_loggers': True,
'formatters':
'standard':
'format': "[%(asctime)s] %(levelname)s [%(name)s.%(funcName)s:%(lineno)d] %(message)s",
'datefmt': "%d/%b/%Y %H:%M:%S"
,
,
'handlers':
'console':
'level': 'DEBUG',
'()': 'logutils.colorize.ColorizingStreamHandler',
'formatter': 'standard',
'stream': sys.stdout
,
'mail_admins':
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler',
'include_html': True,
,
,
'loggers':
'django':
'handlers': ['mail_admins'],
'propagate': True,
'level': 'ERROR',
,
'mymodule':
'handlers': ['console', 'mail_admins'],
'propagate': True,
'level': 'DEBUG'
,
然后像这样运行它。
./manage.py celeryd --event --beat --settings=dev
这样做是设置两个不同的处理程序。第一个是控制台处理程序,它报告任何 DEBUG 及更高版本。第二个是只查看 ERRORS 及以上的邮件处理程序。接下来是记录器报告的内容。所有 django.* 记录器都会被报告给任何 ERROR 级别的处理程序(mail_admins)。我们的任何模块都可以将 DEBUG 及更高版本推送到两者。
我想这就是你所追求的。
【讨论】:
嗨 - 这不是我所需要的。我试图设置的是一个配置,其中来自白名单上的记录器的所有 DEBUG 调用都转到控制台,而来自其他模块(例如:库)的所有 DEBUG 调用都被忽略。因此,例如:来自名为“mymodule”的记录器(以及所有子模块)的所有 DEBUG 调用都将被捕获,并且任何其他 DEBUG 调用都将被忽略。高于 DEBUG 的级别不受影响。 哦,在这种情况下,只需将名为 '' 的记录器更改为 'mymodule'。我已经更新了答案以上是关于Celery Python 日志记录配置仅从指定模块记录 DEBUG的主要内容,如果未能解决你的问题,请参考以下文章
Django - Celery - supervisord 日志配置