Python logging.info создает пустые текстовые файлы при втором запуске скрипта - PullRequest
0 голосов
/ 19 мая 2019

Я полный 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...