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, не переопределяют значения по умолчанию. Вы просто не переопределяете их.
Если вы отключите существующие регистраторы, вам придется определять все самостоятельно. Вы получите только то, что настроено в вашем конфиге.