gpt4 book ai didi

python - 为什么 IDLE 再次运行时不创建带有日志记录模块的新日志文件?

转载 作者:行者123 更新时间:2023-11-28 17:53:24 24 4
gpt4 key购买 nike

我在 IDLE 中为 Python 的日志记录模块测试了一些简单的日志记录示例:

import logging

logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(levelname)s %(message)s', filename='TESTLOG.log')

logging.debug('A debug message')

它按预期工作:创建了一个名为 TESTLOG.log 的文件,其中包含调试消息。

但是如果我在 IDLE 脚本窗口打开时删除了日志文件,当我尝试再次运行该模块/f5 时,不会创建新的日志文件。如果我关闭脚本窗口然后重新打开并运行它,则会创建日志文件。

相反,如果我从命令行运行脚本,在我删除日志文件并重新运行脚本后,日志文件总是生成。

这两种情况有什么区别?

最佳答案

第一次调用 basicConfig 时会添加一个 Handlerlogging 中的根记录器模块。随后调用 basicConfig 检查根记录器中是否已经有一个 Handler,如果有则调用 basicConfig 没有效果(即它不会重新- 创建日志文件)。

如果您打开一个 IDLE 窗口并运行您的脚本,则会加载日志记录模块,并且该脚本会通过调用 basicConfig 来配置根记录器。因为您随后没有关闭 IDLE 窗口,所以日志记录模块保持加载状态,随后对 basicConfig 的调用无效。

关闭并重新打开 IDLE 窗口会有效地启动一个新的 python 实例,并且必须重新加载日志记录模块,因此对 basicConfig 的调用会产生影响。同样,每次运行脚本时,从命令行运行脚本都需要一个新的 python 实例。

关于python - 为什么 IDLE 再次运行时不创建带有日志记录模块的新日志文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5644789/

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