Python logging.info在脚本第二次运行时创建空文本文件

时间:2019-05-18 21:58:22

标签: python python-3.x anaconda

我完全是菜鸟,并对我从以前的工程师那里继承来的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.

我也尝试过明确设置mode ='w',但没有效果。

logging.basicConfig(level=level, format=format, handlers=handlers, mode='w')

0 个答案:

没有答案