将 sys.stdout 复制到日志文件
在 Python 中,将 sys.stdout 复制到日志文件可以提供非侵入性的解决方案无需修改应用程序代码即可进行日志记录。以下是实现此操作的方法:
在交互模式下,当您希望输出既显示在屏幕上又写入日志文件时,您可以恢复守护程序模式中使用的逻辑。不要重定向 stdout 和 stderr,而是使用 os.dup2 复制它们。
下面的代码演示了这一点:
import os, sys # Open the log file for writing without buffering so = se = open("a.log", 'w', 0) # Duplicate stdout and stderr to the log file os.dup2(sys.stdout.fileno(), so.fileno()) os.dup2(sys.stderr.fileno(), se.fileno())
此方法允许您记录所有输出,包括系统调用的输出,无需更改代码。
或者,您可以利用提供的 Tee 类snippet:
# Initialize a Tee object, redirecting stdout to a log file tee = Tee("a.log", 'w')
此类确保所有输出都写入日志文件和标准输出,使其成为在交互模式下登录而无需修改应用程序代码的便捷解决方案。
以上是如何在不修改代码的情况下将 Python 的 sys.stdout 复制到日志文件?的详细内容。更多信息请关注PHP中文网其他相关文章!