22

我试图在 Django 中将调试级别更改为 DEBUG,因为我想在我的代码中添加一些调试消息。它似乎没有任何效果。

我的日志记录配置:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'simple': {
            'format': '%(levelname)s %(message)s'
        },
    },
    'handlers': {
        'console':{
            'level':'DEBUG',
            'class':'logging.StreamHandler',
            'formatter': 'simple'
        },
    },
    'loggers': {
        'django.request':{
            'handlers': ['console'],
            'propagate': False,
            'level': 'DEBUG',
        },
    },
}

代码:

import logging ; logger = logging.getLogger(__name__)
logger.debug("THIS MESSAGE IS NOT SHOWN IN THE LOGS")
logger.warn("THIS ONE IS")

控制台输出:

WARNING:core.handlers:THIS ONE IS

我也尝试在我的设置文件中设置 DEBUG = False 和 DEBUG = True 。有任何想法吗?

编辑:如果我直接在记录器上设置日志级别,它可以工作:

import logging ; logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
logger.debug("THIS MESSAGE IS NOT SHOWN IN THE LOGS")

输出:

DEBUG:core.handlers:THIS MESSAGE IS NOT SHOWN IN THE LOGS
WARNING:core.handlers:THIS ONE IS

但是:似乎配置文件被完全忽略了。即使我将配置中的两个条目都设置回 ERROR,它也会始终打印这两个语句。这是正确的行为还是我仍然错过了什么?

4

2 回答 2

14

您需要添加例如

'core.handlers': {
    'level': 'DEBUG',
    'handlers': ['console']
}

django.request条目并行,或

'root': {
    'level': 'DEBUG',
    'handlers': ['console']
}

与“记录器”条目并行。这将确保在您实际使用的记录器上设置级别,而不仅仅是django.request记录器。

更新:要显示所有模块的消息,只需在旁边添加条目django.request以包含您的顶级模块,例如,api或其他。由于您没有确切地说出您的包/模块层次结构是什么,所以我不能更具体。handlerscore

于 2013-11-01T08:52:57.040 回答
5

我通过改变来修复它

LOGGING = {
    ...
}

至:

logging.config.dictConfig({
    ...
})

例如将所有消息记录到控制台:

import logging.config
LOGGING_CONFIG = None
logging.config.dictConfig({
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'console': {
            # exact format is not important, this is the minimum information
            'format': '%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
        },
    },
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'formatter': 'console',
        },
    },
    'loggers': {
    # root logger
        '': {
            'level': 'DEBUG',
            'handlers': ['console'],
        },
    },
})
于 2018-05-01T21:29:10.310 回答