Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Django调试工具栏中使用日志记录?_Python_Django_Debugging_Django Views - Fatal编程技术网

Python 如何在Django调试工具栏中使用日志记录?

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所述,通常不建议直接记录到根记录器

我想在django应用程序中的视图函数的不同点输出调试消息。文档中说它使用内置python日志,但是我找不到更多的信息。我真的不想登录到文件,而是要登录到工具栏上的“信息”窗格。这是如何工作的?

您只需使用这些方法,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',
    },
}

设置“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年工具栏上没有显示任何低于警告级别的内容,我没有日志配置