Python/django根记录器级别

Python/django根记录器级别,python,django,logging,Python,Django,Logging,在django项目中,我有以下日志配置: LOGGING = { 'version': 1, 'disable_existing_loggers': True, 'formatters': { 'verbose': { 'format': '%(name)s %(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s' },

在django项目中,我有以下日志配置:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'verbose': {
            'format': '%(name)s %(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
        },
        'simple': {
            'format': '%(levelname)s %(message)s'
        },
    },
    'handlers': {
        'null': {
            'level': 'DEBUG',
            'class':'django.utils.log.NullHandler',
        },
        'sentry': {
            'level': 'DEBUG',
            'class': 'sentry.client.handlers.SentryHandler',
            'formatter': 'verbose'
        },
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'verbose'
        }
    },
    'loggers': {
        'django.db.backends': {
            'handlers': ['console'],
            'level': 'INFO',
            'propagate': False,
        },
        '': {
            'level': 'ERROR',
            'handlers': ['console'],
        },
    },
}
运行
manage.py migrate
时,控制台中仍有大量调试内容,例如:

DEBUG south 2011-08-08 11:22:23,847 generic 19539 140735078710464 south execute "..."
当我将根记录器级别设置为error时,控制台中只会出现错误消息。我做错了什么

更新

问题似乎出现在
南部。记录器
模块:

import sys
import logging
from django.conf import settings

# Create a dummy handler to use for now.
class NullHandler(logging.Handler):
    def emit(self, record):
        pass

_logger = logging.getLogger("south")
_logger.addHandler(NullHandler())
_logger.setLevel(logging.DEBUG)
删除
\u logger.setLevel(logging.DEBUG)后,
日志记录按预期工作


有人能给我解释一下这种奇怪的行为吗?

南方开发人员不应该真的将顶级记录器级别设置为调试。事实上,如果他们根本不设置它,它将继承根记录器的级别,这通常是由应用程序开发人员定义的(在本例中,我猜就是您)


我建议您在相关的南方论坛上报告这是一个bug。

+1这样其他库开发人员就可以知道什么是不应该做的