在单个文件中从一堆python函数捕获日志信息

在单个文件中从一堆python函数捕获日志信息,python,python-2.7,Python,Python 2.7,我有3个脚本。一个是starttest.py,它启动test.py中调用的方法的执行。方法在module.py中定义 每个文件中都有许多打印语句,我想从Starttest.py文件本身捕获日志文件中的每个打印语句。我尝试在starttest.py文件中使用sys.stdout,但此函数仅从starttest.py文件中获取打印语句。它对test.py和module.py文件打印语句没有任何控制 有没有建议只在一个地方捕获所有文件中的打印语句?在导入test.py或module.py中的任何内容之

我有3个脚本。一个是
starttest.py
,它启动
test.py
中调用的方法的执行。方法在
module.py
中定义

每个文件中都有许多打印语句,我想从
Starttest.py
文件本身捕获日志文件中的每个打印语句。我尝试在
starttest.py
文件中使用
sys.stdout
,但此函数仅从
starttest.py
文件中获取打印语句。它对
test.py
module.py
文件打印语句没有任何控制


有没有建议只在一个地方捕获所有文件中的打印语句?

在导入
test.py
module.py
中的任何内容之前,请先查看python附带的日志模块,用您喜欢的对象替换tye
sys.stdout
文件对象:

import sys

sys.stdout = open("test-output.txt", "wt")

# Import the rest
如果您运行的是类Unix操作系统,则有一种更安全的方法,它不需要替换文件对象引用。特别是因为覆盖
sys.stdout
不能保证前一个对象被销毁:

import os
import sys

fd = os.open("test-output.txt", os.O_WRONLY | os.O_CREAT, 0644)
os.dup2(fd, sys.stdout.fileno())
os.close(fd)
请注意,几乎所有Python守护化实现都使用了上述技巧

即使没有直接关系,也请记住,您可以使用shell将命令输出重定向到文件(也适用于Windows):


考虑使用“代替代码>打印< /COD>语句”。日志记录模块可以帮助我捕获打印语句以及其他级别的调试信息吗?谢谢。这很有帮助!!!早些时候,我还尝试使用sys.stdout函数将日志保存到单个文件中,但没有成功。现在它成功了。我还将sys.stdout=open(“test output.txt”、“wt”)放在所有导入声明下面,它工作了!!!Surprised@user2033758:现在您的问题已解决,如果您勾选此答案,它将确认回答者并将问题标记为已结束。
python starttest.py >test-output.txt