gpt4 book ai didi

python - 重置 python 解释器以进行日志记录

转载 作者:太空宇宙 更新时间:2023-11-03 18:10:57 25 4
gpt4 key购买 nike

我是 Python 新手。我使用 Vim 和 Python 模式来编辑和测试我的代码,并注意到如果我多次运行相同的代码,则日志文件只会在代码第一次运行时更新。例如下面是一段名为“teSTLogging.py”的代码

#!/usr/bin/python2.7
import os.path
import logging

filename_logging = os.path.join(os.path.dirname(__file__), "testlogging.log")
logging.basicConfig(filename=filename_logging, filemode='w',
level=logging.DEBUG)
logging.info('Aye')

如果我打开一个新的 gvim session 并使用 python 模式运行此代码,那么我将获得一个名为“teSTLogging.log”的文件,其中包含内容

INFO:root:Aye

看起来很有希望!但是,如果我删除日志文件并再次在 pythong-mode 下运行代码,则不会重新创建日志文件。如果此时我在这样的终端中运行代码

./testlogging.py

然后日志文件会再次生成!

我检查了 Python 文档,并在日志记录教程 ( https://docs.python.org/2.7/howto/logging.html#logging-to-a-file ) 中注意到了这一行:

A very common situation is that of recording logging events in a file, so let’s look at that next. Be sure to try the following in a newly-started Python interpreter, and don’t just continue from the session described above:...

所以我猜想日志文件只更新一次的问题与我第二次运行代码时保留在同一个解释器中的 python 模式有关。所以我的问题是:有没有办法解决这个问题,通过摆弄日志模块,在代码中添加一些东西来重置解释器,或者告诉Python模式重置它?

我也很好奇为什么日志模块需要一个新启动的解释器才能工作......

感谢您提前提供的帮助。

最佳答案

日志文件不会重新创建,因为日志记录模块仍然打开旧的日志文件并将继续写入它(即使您已将其删除)。解决方案是在同一解释器中再次运行代码之前强制日志记录模块释放所有获取的资源:

# configure logging
# log a message
# delete log file

logging.shutdown()

# configure logging
# log a message (log file will be recreated)

换句话说,在代码末尾调用 logging.shutdown() ,然后您可以在同一个解释器中重新运行它,它将按预期工作(重新创建日志每次运行时都会生成文件)。

关于python - 重置 python 解释器以进行日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25958444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com