Python 中的日志记录模块如何管理保存文件

How the logging module in Python manages saving files

我正在使用 Python logging 模块将我的应用程序中发生的事情记录在文件上和终端中。

我的代码是:

import logging
logging.basicConfig(level=logging.DEBUG, handlers=[  # stream=sys.stdout,
                            logging.FileHandler("debug.log", 'a'),
                            logging.StreamHandler()
                        ], format='%(asctime)s %(levelname)s %(message)s', )

logging.info("This is a LOG INFO message")

现在,程序一运行,它就会将日志保存在文件中。

我想知道 logging 方法如何将此信息保存到文件中。它是否 打开 -> 写入 -> 关闭 文件每次调用 logging 行?在程序结束之前保持文件打开吗?

我问是因为如果我的软件由于某些原因崩溃或 PC 重启,已经写入的日志文件是安全的还是可能已损坏?

顾名思义,您在这里设置的处理程序,将它们的日志消息流到指定的接收器。 Logging Handler Documentation 声明它:

"[...] sends logging output to streams such as sys.stdout, sys.stderr or any file-like object (or, more precisely, any object which supports write() and flush() methods)."

查看 Source Code and considering this GitHub Gist 因为如果您真的愿意,您显然可以将日志记录实例与上下文管理器一起使用,我假设您的直觉是完全正确的(关于打开 > 写入 > 关闭) .