首页 > 解决方案 > Python logging.info 在第二次运行脚本时创建空文本文件

问题描述

我完全是菜鸟和故障排除我从以前的工程师那里继承的 Python 程序。我正在使用最新的 Anaconda (Anaconda3-2019.03-Windows) 并始终从 Spyder 3.3.3 中运行该程序。

该程序在各个点使用 logging.info 函数。
日志记录显示在 IPython 控制台上,并且在结束或程序时,还将日志写入文本文件。

我第一次运行程序时,日志文本文件包含控制台中显示的内容的忠实副本。

几分钟后,如果我第二次运行该程序,控制台会正确显示新日志。还会创建一个新的文本文件,但它是空的!

在程序运行的第 3 次、第 4 次等时,行为相同:控制台显示 OK,但新的文本日志文件始终为Empty

如果我清除 IPython 控制台(“关闭选项卡”),然后再次运行程序,第一个输出日志文本文件就可以了。随后的运行继续创建空文本日志文件。

--> 如何解决空文本日志文件的问题?

我不想附加到文本日志。我想要在每次程序运行时创建一个新的文本日志文件

这是代码部分:

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')

标签: pythonpython-3.xanaconda

解决方案


推荐阅读