首页 > 解决方案 > 尽管配置,Django 信息和调试日志被忽略

问题描述

所以我正在尝试在 Django 程序中设置日志记录。我在 settings.py 中设置了日志记录配置:

    DEBUG = True
    LOGGING_CONFIG = None
    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'formatters': {
            'custom': {
                'format': '%(asctime)s %(levelname)-8s %(name)-15s %(message)s'
            }
        },
        'handlers': {
            'console': {
                'level': 'NOTSET',
                'class': 'logging.StreamHandler',
                'formatter': 'custom'
            }
        },
        'loggers': {
            '': {
                'handlers': ['console'],
            }
        }
    }
    import logging.config

    logging.config.dictConfig(LOGGING)

然后我执行以下操作:

import logging
logger = logging.getLogger(__name__)

logger.info("INFO")
logger.debug("DEBUG")
logger.warn("WARN")
logger.critical("CRITICAL")
logger.error("ERROR")

但我只得到以下输出:

2019-05-21 14:08:31,877 WARNING  dashboards.charts WARN
2019-05-21 14:08:31,877 CRITICAL dashboards.charts CRITICAL
2019-05-21 14:08:31,877 ERROR    dashboards.charts ERROR

我尝试将级别更改为调试或信息,但这并没有改变任何东西。格式化程序正常工作,所以我不知道为什么关卡不起作用。

标签: pythondjangologging

解决方案


尝试放入level里面loggers而不是handlers. 例如:

'handlers': {
    'console': {
        'class': 'logging.StreamHandler',
        'formatter': 'custom'
    }
},
'loggers': {
    '': {
        'handlers': ['console'],
        'level': 'DEBUG'
    }
}

推荐阅读