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

时间:2013-02-04 00:34:19

标签: python python-2.7

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

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

是否有建议仅从一个地方的所有文件中捕获打印报表?

2 个答案:

答案 0 :(得分:1)

在从test.pymodule.py导入任何内容之前,请将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的几乎所有 daemonization 实现都使用上述技巧。

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

python starttest.py >test-output.txt

答案 1 :(得分:0)

也许看看python

附带的日志记录模块