Я пытался понять логирование в python.У меня есть модуль init , два других модуля и основной модуль.По какой-то причине, когда я запускаю свой модуль, данные журнала пересекают поток кода и печатаются первыми перед другими выходными данными
Может кто-нибудь сказать мне, почему это происходит
это в __init__.py
from dir1.mod1 import FirstClass
from dir1.mod2 import SecondClass
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
f_handler=logging.FileHandler('python_logs.log')
f_handler.setLevel(logging.DEBUG)
c_handler = logging.StreamHandler()
c_handler.setLevel(logging.ERROR)
f_formatter = logging.Formatter('%(name)s - %(levelname)s - %(message)s')
c_formatter = logging.Formatter('%(name)s - %(levelname)s - %(message)s')
f_handler.setFormatter(f_formatter)
c_handler.setFormatter(c_formatter)
logger.addHandler(f_handler)
logger.addHandler(c_handler)
Это в двух других модулях (записано внутри __init__()
класса соответственно
self.logger = logging.getLogger(__name__)
фрагмент функции addn (), определенной внутри одного из модулей
def addn(self):
z=self.x +self.y
print('sum is '+z)
self.logger.error('incrementing number!')
self.logger.info('Still incrementing number!!')
return z
И у моих основных модулей (которые я запускаю) есть это:
from dir1.mod1 import FirstClass
from dir1.mod2 import SecondClass
number = FirstClass(2,2)
print('addition results')
number.addn()
Я ожидал вывода, как показано ниже
результаты сложения
сумма равна 3
dir1.mod1
- ОШИБКА - увеличивающийся номер!
Но я получил
dir1.mod1
- ОШИБКА -инкрементное число!
dir1.mod1
- ОШИБКА - инкрементное число!
результаты сложения:
сумма равна 3
Почему сообщение журнала печатается при первом скачкевне потока кода? А также кто-то может сказать мне, почему сообщение журнала печатается дважды ??