Django неименованный логгер по умолчанию переопределяется импортированным пакетом

В моем приложении django я определил конфигурацию протоколирования:

default_config = {
            'handlers': handlers_to_use,
            'level': 'WARN',
        }

LOGGING: Dict[str, Any] = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': handler_configs,
    'root': default_config,
    'loggers': {
        '': default_config
    }
}

Итак, вы видите, что я использую безымянный логгер '' и корневой логгер, который должен установить уровень логирования по умолчанию на WARN. Однако есть некоторые пакеты (factory_boy и PIL), которые выдают мне журналы DEBUG, что не имеет смысла, поскольку WARN должен выдавать только журналы ERROR и WARN, основываясь на иерархии.

Как они переопределяют значение по умолчанию? Если я добавлю factory и PIL в список регистраторов, все работает правильно, но мне интересно, почему ни безымянный, ни корневой регистратор не перехватывает отладочные журналы

Любая помощь будет очень признательна

Вы все еще получаете регистраторы, которые определены в другом месте, из-за этой строки:

'disable_existing_loggers': False

Другие пакеты, такие как factory_boy и PIL, не переопределяют значения по умолчанию. Вы просто не переопределяете их.

Если вы отключите существующие регистраторы, вам придется определять все самостоятельно. Вы получите только то, что настроено в вашем конфиге.

Вернуться на верх