Я не уверен из твоего вопроса, как именно что-то ломается, но вот как я это вижу. Различные модули, которые выполняют log = logging.getLogger(__name__)
, будут иметь действительные имена для своих регистраторов (имя регистратора = имя пакета), если только вы не захотите каким-либо образом переместить модули в другое место пакета.
Во время импорта конфигурация регистрации может быть или не быть установлена, и не должно быть никаких реальных вызовов регистрации, сделанных как побочный эффект импорта (если есть, сообщения могут некуда идти) .
Загрузка новой конфигурации с использованием fileConfig
обычно просто устанавливает обработчики, средства форматирования и уровни в регистраторах.
Когда вы впоследствии вызываете код в импортированных модулях, они регистрируются через свои регистраторы, у которых есть обработчики, подключенные вашим предыдущим вызовом конфигурации, - поэтому они будут выводить в соответствии с конфигурацией.
Вы должны знать, что в более старых версиях Python (<= 2.5) вызовы <code>fileConfig неизбежно отключают существующие регистраторы, которые не были названы в конфигурации - в более поздних версиях Python (> = 2.6), это настраивается с помощью аргумента ключевого слова disable_existing_loggers=False
, переданного в fileConfig
. Возможно, вы захотите проверить это, поскольку это иногда приводит к неожиданному поведению (для этого параметра по умолчанию используется True
, для совместимости с поведением в более старых версиях Python).
Если вы опубликуете более подробную информацию о том, что кажется неисправным, я мог бы предоставить более точную диагностику того, что происходит.