如何在Django调试工具栏中使用日志记录?
问题描述:
我想在我的django应用程序的视图函数中的不同点输出调试消息。 django-debug-toolbar的文档声称它使用python日志中的构建,但是我找不到更多的信息。我不想登录到文件,而是登录到工具栏上的信息窗格。这个怎么用?如何在Django调试工具栏中使用日志记录?
答
您只需使用logging module方法,并且DjDT将拦截并将其显示在“记录面板”中。
import logging
logging.debug('Debug Message')
if some_error:
logging.error('Error Message')
答
通常不推荐直接记录到根记录器,如@ 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',
},
}
设置“增量”和“disable_existing_loggers”都是重要的。你想要做的就是将根记录器的日志级别设置为“DEBUG”。您还可以使用“记录器”条目为特定记录器设置级别。只需省略“处理程序”部分,并设置“传播”:True,以便它们被DjDT处理程序捕获。
答
如果您有一个现有的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'],
},
}
如果有更干净的方法可以做到这一点,我很乐意看到它。
感谢您对根记录器进行详细说明。这是其他答案缺乏的信息。 – jnns 2016-08-15 09:13:59
设置部分帮助我,谢谢! 2016年仍然很好的建议 – Jeff 2016-08-26 23:15:24