Проблема в этой строке в Foo и Bar:
logger = logging.getLogger(__name__)
Обратите внимание, что вы сбрасываете обработчик журналирования только в Main.py
с именем регистратора __name__
, которое разрешено до "__main__"
, как вы можете видеть в выходных данных. Когда вы получаете регистратор от Foo.py
, ваше имя регистратора будет "Foo"
, и, следовательно, все, что вы установили на "__main__"
, не будет применено.
Что вы хотите сделать: Измените часть __name__
. Например, ваше приложение называется fubar
, тогда вы делаете это в Main.py
:
logger = logging.getLogger("fubar")
и в Foo.py
, как подмодуль в приложении, сделайте это:
logger = logging.getLogger("fubar.Foo")
Или вы можете даже использовать то же имя, если хотите. Таким образом, обработчик, назначенный на более высоком уровне, перейдет на подуровни.