Python 如何在Django调试工具栏中使用日志记录?
我想在django应用程序中的视图函数的不同点输出调试消息。文档中说它使用内置python日志,但是我找不到更多的信息。我真的不想登录到文件,而是要登录到工具栏上的“信息”窗格。这是如何工作的?您只需使用这些方法,DjDT就会截取并在日志面板中显示它们Python 如何在Django调试工具栏中使用日志记录?,python,django,debugging,django-views,Python,Django,Debugging,Django Views,我想在django应用程序中的视图函数的不同点输出调试消息。文档中说它使用内置python日志,但是我找不到更多的信息。我真的不想登录到文件,而是要登录到工具栏上的“信息”窗格。这是如何工作的?您只需使用这些方法,DjDT就会截取并在日志面板中显示它们 import logging logging.debug('Debug Message') if some_error: logging.error('Error Message') 如@jonwd7所述,通常不建议直接记录到根记录器
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',
},
}
设置“incremental”和“disable_existing_logger”都很重要,因此您不会禁用附加到根记录器的工具栏上的处理程序。您只需要将根记录器的日志级别设置为“DEBUG”。您还可以使用“记录器”条目为特定记录器设置级别。只需省略“Handlers”部分,并设置“propagate”:True,这样它们就会被DjDT处理程序捕获 如果您有一个现有的日志配置dict,并且您不想切换到“增量”,那么您需要将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'],
},
}
如果有更干净的方法,我很乐意看到。感谢您详细介绍根记录器。这是其他答案所缺乏的信息。背景部分帮助了我,谢谢!还是很好的建议在2016年工具栏上没有显示任何低于警告级别的内容,我没有日志配置