我想在我的 django 应用程序中在视图函数的不同点输出调试消息。django-debug-toolbar的文档说它使用 python 日志记录中的构建,但我找不到更多信息。我真的不想登录到文件,而是登录到工具栏上的信息窗格。这是如何运作的?
问问题
10512 次
3 回答
44
您只需使用日志记录模块方法,DjDT 将拦截并在日志记录面板中显示它们。
import logging
logging.debug('Debug Message')
if some_error:
logging.error('Error Message')
于 2010-04-10T21:44:17.987 回答
15
正如@jonwd7 提到的,通常不建议直接记录到根记录器。通常我遵循这种模式:
import logging
logger = logging.getLogger(__name__)
del logging # To prevent accidentally using it
...
logger.debug("Some message")
这使您可以更精细地控制哪些日志消息显示和不显示。不幸的是,除非您指定特定的日志记录配置,否则以这种方式使用它会阻止 django 调试工具栏捕获任何日志消息。这是我能想到的最简单的一个:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'incremental': True,
'root': {
'level': 'DEBUG',
},
}
设置“incremental”和“disable_existing_loggers”都很重要,因此您不会禁用附加到根记录器的工具栏的处理程序。您要做的就是将根记录器的日志级别设置为“DEBUG”。您还可以使用“记录器”条目来设置特定记录器的级别。只需省略 "Handlers" 部分,并设置 "propagate":True 以便它们被 DjDT 处理程序捕获。
于 2015-07-23T00:30:59.927 回答
8
如果您有一个现有的 LOGGING 配置字典,并且不想通过切换到“增量”来搞砸它,则需要重新添加 DjDT 日志作为处理程序,然后将其添加到根记录器的列表中处理程序。
from debug_toolbar.panels.logging import collector # needed for handler constructor below
LOGGING = {
# existing options, formatters, loggers, etc
handlers = {
# existing handlers
'djdt_log': {
'level': 'DEBUG',
'class': 'debug_toolbar.panels.logging.ThreadTrackingHandler',
'collector': collector,
},
},
'root': {
'level': 'DEBUG',
'handlers': ['djdt_log'],
},
}
如果有更清洁的方法可以做到这一点,我很乐意看到它。
于 2018-01-17T00:24:07.283 回答