Я полный noob и устраняю неполадки в программе Python, которую я унаследовал от предыдущего инженера.
Я использую последнюю версию Anaconda (Anaconda3-2019.03-Windows) и всегда запускаю программу из Spyder 3.3.3.
Программа использует функцию logging.info в различных точках.
Ведение журнала отображается на консоли IPython, а по завершении или в программе также записывает журнал в текстовый файл.
При первом запуске программы текстовый файл журнала содержит точную копию того, что отображалось в консоли.
Через пару минут, если я запускаю программу 2 раза, консоль правильно отображает новый журнал. Новый текстовый файл также создается, но он пуст!
То же поведение на 3-м, 4-м и т. Д. При запуске программы: Консоль отображает OK, но новые текстовые файлы журнала всегда Пусто .
Если я очищаю консоль IPython («закрыть вкладку»), а затем снова запускаю программу, текстовый файл 1-го выходного журнала в порядке. Последующие запуски продолжают создавать пустые текстовые файлы журнала.
-> Как исправить проблему с пустым файлом текстового журнала?
Я не хочу добавлять в текстовый журнал. Я хочу, чтобы новый текстовый файл журнала создавался при каждом запуске программы
Вот часть кода:
starting_time = datetime.datetime.now()
logfilename = ('SomeLog'
+ datetime.datetime.now().strftime("%Y-%m-%d-%H-%M") + '.txt')
level = logging.INFO
format = ' %(message)s'
handlers = [logging.FileHandler(logfilename), logging.StreamHandler()]
logging.basicConfig(level=level, format=format, handlers=handlers)
# Bunch of math processing.
logging.info('Data written succesfully to: ' + sqlite_table)
logging.info('Elapsed time to finish SQL write: '
+ str((datetime.datetime.now() - starting_time).seconds) + ' seconds')
# More math processing.
logging.info("Total elapsed time: "
+ str((datetime.datetime.now() - starting_time).seconds) + ' seconds')
logging.shutdown() # last line of python program.
Я также попытался явно установить режим = 'w', но безрезультатно.
logging.basicConfig(level=level, format=format, handlers=handlers, mode='w')