我正在尝试让django celery记录(到控制台)来自我的模块(而不是库)的DEBUG(及更高版本)事件。所以从以下开始芹菜:
python hack/manage.py celeryd -E -l DEBUG -c 2
将意味着所有DEBUG事件都传递给控制台(这是我的根记录器上的处理程序)。我想修改此行为,以便:
这样做的最佳方式是什么?
答案 0 :(得分:3)
我已经发现了这个问题,而且没有一种“最好”的方法可以做到这一点。记住一些事情很重要。
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及以上版本。
我认为这就是你所追求的。