首页 文章

Django:如何将日志级别设置为INFO或DEBUG

提问于
浏览
11

我试图在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 . 有任何想法吗?

Edit: 如果我直接在 Logger 上设置日志级别,它可以工作:

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,它也会打印两个语句 always . 这是正确的行为还是我还缺少什么?

2 回答

  • 9

    你需要添加例如

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

    django.request 条目并行,或

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

    与'loggers'条目并行 . 这将确保在您实际使用的 Logger 上设置级别,而不仅仅是 django.request Logger .

    Update: 要显示所有模块的消息,只需在 django.request 旁边添加条目以包含您的顶级模块,例如: apihandlerscore 或其他什么 . 因为你没有更具体的 .

  • 1

    我通过改变来修复它

    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'],
            },
        },
    })
    

相关问题