В одном из скриптов ведение журнала настроено так:
logging configuration - two handlers
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
fh = logging.FileHandler('logfile')
fh.setLevel(logging.DEBUG)
ch = logging.StreamHandler()
ch.setLevel(logging.ERROR)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
logger.addHandler(fh)
logger.addHandler(ch)
Довольно обычный регистратор, верно?Конечно, все же это приводит к тому, что консоль Spyder IPython ведет себя странным образом.
Каждый последующий запуск скрипта («запуск» Spyder через внутреннюю консоль IPython) увеличивает количество раз, которое регистрируется каждое из сообщений журнала,т.е. при втором запуске сценария сообщение появляется дважды, в третий раз - три раза и т. д.
2018-12-06 17:03:44,888 - root - DEBUG - Start.
2018-12-06 17:03:44,891 - root - DEBUG - Exit.
2018-12-06 17:03:45,982 - root - DEBUG - Start.
2018-12-06 17:03:45,982 - root - DEBUG - Start.
2018-12-06 17:03:45,984 - root - DEBUG - Exit.
2018-12-06 17:03:45,984 - root - DEBUG - Exit.
2018-12-06 17:03:49,739 - root - DEBUG - Start.
2018-12-06 17:03:49,739 - root - DEBUG - Start.
2018-12-06 17:03:49,739 - root - DEBUG - Start.
2018-12-06 17:03:49,742 - root - DEBUG - Exit.
2018-12-06 17:03:49,742 - root - DEBUG - Exit.
2018-12-06 17:03:49,742 - root - DEBUG - Exit.
Перезапуск ядра IPython или охват нового экземпляра консоли сбрасывает это поведение.«Сброс переменных», кажется, не влияет на это, не так ли?
Я думаю, что новые экземпляры fileHandlers добавляются в объект 'logger' при каждом последующем запуске.Отметьте одну и ту же метку времени на каждой из дублирующихся записей журнала.
Есть идеи, как избежать / исправить это?